Ответ 1
Проблема может быть абсолютно такой: конвертировать 18446744073709551615 в hex, и вы найдете
$FFFF-FFFF-FFFF-FFFF.
Если ваше поле не соответствует значению 64 бит, вы достигаете его предела.
У меня есть таблица mysql с одним полем id в качестве автоматического приращения.
Когда я вставляю значения в таблицу, получаю ошибку как
1467 - Не удалось прочитать значение автоинкремента из механизма хранения
Также show table status
показывает мне, что поле с автоматическим приращением имеет
18446744073709551615
как значение Auto_increment.
Какая проблема может мне помочь...?
Проблема может быть абсолютно такой: конвертировать 18446744073709551615 в hex, и вы найдете
$FFFF-FFFF-FFFF-FFFF.
Если ваше поле не соответствует значению 64 бит, вы достигаете его предела.
У меня была такая же ошибка, но в моем случае у меня было около 1,5 тыс. записей в таблице. Я исправил его, сбросив AUTO INCREMEN следующим образом:
ALTER TABLE `table_name` AUTO_INCREMENT = 1
Я начал получать эту ошибку пару недель назад, когда выполнял операторы вставки:
Duplicate entry '127' for key 'PRIMARY'
... хотя моя таблица была установлена на автоматическое увеличение. Я вошел и изменил значение auto_increment с 127 на 128, затем я начал получать эту ошибку:
1467 - Failed to read auto-increment value from storage engine
В конце концов я выяснил, что таблица изначально была создана с столбцами tinyint для идентификатора, а не для стандартных целых чисел... поэтому в основном она не могла воспринимать числа больше 127. Я переключил тип столбца на правильные целые числа, и это решило проблему.
Надеюсь, что это помогает кому-то :)
Со своей стороны, я совершил тупую ошибку. Раньше я изменил таблицу и изменил название столбца AUTO_INCREMENT
с ID
на ID
. Поэтому, если имена столбцов чувствительны к регистру, последующие вставки не могли найти исходный столбец.
На самом деле вы можете просто изменить столбец, чтобы удалить его свойство auto_increament
и снова установить его как auto_increment
. На моей стороне этот способ действительно работал.
Я делаю ту же ошибку. Я просто изменяю таблицу и увеличиваю размер поля автоматического увеличения, а затем запускаю следующий запрос -
ALTER TABLE `table_name` AUTO_INCREMENT = 6221;
где 6221 - это последнее значение, зарегистрированное с помощью Auto_increment.
Я впервые испытал эту ошибку меньше часа назад. Сброс auto_increment с помощью инструкции SQL в PHP MyAdmin не удался. После поиска решения я уронил стол и создал замену. Ошибка осталась. Приблизившись, выяснилось, что auto_increment был установлен в 0, хотя я специально установил primary_key и auto_increment при создании полей. Ручное сброс auto_increment на 1, снова с использованием PHP MyAdmin, устранило ошибку. К счастью для меня, я работал только с таблицей с тремя столбцами, содержащей несколько строк тестовых данных.
У меня тоже была эта проблема сегодня. У меня есть таблица с более чем двумя миллионами строк, и я попытался добавить еще 140K строк с помощью LOAD DATA, когда произошла эта ошибка. Я переключился на движок MyISAM и все заработало.
Я исправил это, удалив автоинкремент, сохранив таблицу, а затем снова добавив автоинкремент.
У меня была та же проблема, и решение заключалось в том, чтобы изменить столбец от smallint (6) до int.
У меня была проблема, что auto_increment был установлен в 0, но установка auto_increment явно не работала (осталась в 0). Я ввел запись вручную с идентификатором, и после этого значение было установлено правильно.
Я решаю эту проблему, снимите флажок AUTO_INCREMENT в поле и проверьте снова
У меня была та же проблема.
Причина: я изменил имя имени моего поля таблицы с использованием первичного ключа и автоматического прироста, из-за которого автоматическое приращение перестало работать и появилась ошибка 1467.
Что сработало для меня, это сброс первичного ключа в phpmyadmin, как показано ниже:
Это сработало для меня.
Я обнаружил, что параметр был включен. по данным экспертов БД, оно не должно быть больше 1.
В моем случае это было установлено на "4", как показано ниже.
mysql> select @@innodb_force_recovery; + ------------------------- + | @@innodb_force_recovery | + ------------------------- + | 4 | + ------------------------- +
Следовательно, я перезапустил MySQL без передачи параметра во время запуска,
позже я смог вставить или обновить таблицы... надеюсь, это поможет кому-то..
У меня такая же проблема. У меня есть таблица с тысячами записей. Я просто изменил тип поля от int до bigint