Подтвердить что ты не робот

Mysql Не удалось прочитать значение автоматического прироста из механизма хранения

У меня есть таблица mysql с одним полем id в качестве автоматического приращения.

Когда я вставляю значения в таблицу, получаю ошибку как

1467 - Не удалось прочитать значение автоинкремента из механизма хранения

Также show table status показывает мне, что поле с автоматическим приращением имеет

18446744073709551615 как значение Auto_increment.

Какая проблема может мне помочь...?

4b9b3361

Ответ 1

Проблема может быть абсолютно такой: конвертировать 18446744073709551615 в hex, и вы найдете $FFFF-FFFF-FFFF-FFFF.
Если ваше поле не соответствует значению 64 бит, вы достигаете его предела.

Ответ 2

У меня была такая же ошибка, но в моем случае у меня было около 1,5 тыс. записей в таблице. Я исправил его, сбросив AUTO INCREMEN следующим образом:

ALTER TABLE `table_name`  AUTO_INCREMENT = 1

Ответ 3

Я начал получать эту ошибку пару недель назад, когда выполнял операторы вставки:

Duplicate entry '127' for key 'PRIMARY'

... хотя моя таблица была установлена на автоматическое увеличение. Я вошел и изменил значение auto_increment с 127 на 128, затем я начал получать эту ошибку:

1467 - Failed to read auto-increment value from storage engine

В конце концов я выяснил, что таблица изначально была создана с столбцами tinyint для идентификатора, а не для стандартных целых чисел... поэтому в основном она не могла воспринимать числа больше 127. Я переключил тип столбца на правильные целые числа, и это решило проблему.

Надеюсь, что это помогает кому-то :)

Ответ 4

Со своей стороны, я совершил тупую ошибку. Раньше я изменил таблицу и изменил название столбца AUTO_INCREMENT с ID на ID. Поэтому, если имена столбцов чувствительны к регистру, последующие вставки не могли найти исходный столбец.

Ответ 5

На самом деле вы можете просто изменить столбец, чтобы удалить его свойство auto_increament и снова установить его как auto_increment. На моей стороне этот способ действительно работал.

Ответ 6

Я делаю ту же ошибку. Я просто изменяю таблицу и увеличиваю размер поля автоматического увеличения, а затем запускаю следующий запрос -

ALTER TABLE `table_name`  AUTO_INCREMENT = 6221;

где 6221 - это последнее значение, зарегистрированное с помощью Auto_increment.

Ответ 7

Я впервые испытал эту ошибку меньше часа назад. Сброс auto_increment с помощью инструкции SQL в PHP MyAdmin не удался. После поиска решения я уронил стол и создал замену. Ошибка осталась. Приблизившись, выяснилось, что auto_increment был установлен в 0, хотя я специально установил primary_key и auto_increment при создании полей. Ручное сброс auto_increment на 1, снова с использованием PHP MyAdmin, устранило ошибку. К счастью для меня, я работал только с таблицей с тремя столбцами, содержащей несколько строк тестовых данных.

Ответ 8

У меня тоже была эта проблема сегодня. У меня есть таблица с более чем двумя миллионами строк, и я попытался добавить еще 140K строк с помощью LOAD DATA, когда произошла эта ошибка. Я переключился на движок MyISAM и все заработало.

Ответ 9

Я исправил это, удалив автоинкремент, сохранив таблицу, а затем снова добавив автоинкремент.

Ответ 10

У меня была та же проблема, и решение заключалось в том, чтобы изменить столбец от smallint (6) до int.

Ответ 11

У меня была проблема, что auto_increment был установлен в 0, но установка auto_increment явно не работала (осталась в 0). Я ввел запись вручную с идентификатором, и после этого значение было установлено правильно.

Ответ 12

Я решаю эту проблему, снимите флажок AUTO_INCREMENT в поле и проверьте снова

Ответ 13

У меня была та же проблема.

Причина: я изменил имя имени моего поля таблицы с использованием первичного ключа и автоматического прироста, из-за которого автоматическое приращение перестало работать и появилась ошибка 1467.

Что сработало для меня, это сброс первичного ключа в phpmyadmin, как показано ниже:

  • Перейдите на вкладку "Структура" таблицы и нажмите "indexex", как показано на рисунке 1.
  • Теперь отредактируйте первичный ключ, как показано на рисунке 1.
  • Просто нажмите "Перейти", как на рисунке 2.

Изображение 1

Изображение 2

Это сработало для меня.

Ответ 14

Я обнаружил, что параметр был включен. по данным экспертов БД, оно не должно быть больше 1.

В моем случае это было установлено на "4", как показано ниже.

mysql> select @@innodb_force_recovery; + ------------------------- + | @@innodb_force_recovery | + ------------------------- + | 4 | + ------------------------- +

Следовательно, я перезапустил MySQL без передачи параметра во время запуска,

позже я смог вставить или обновить таблицы... надеюсь, это поможет кому-то..

Ответ 15

У меня такая же проблема. У меня есть таблица с тысячами записей. Я просто изменил тип поля от int до bigint