mysql Не удалось прочитать значение автоинкремента из механизма хранения - PullRequest
22 голосов
/ 08 сентября 2011

Я использую таблицу MySQL с одним полем идентификатора в качестве автоинкремента.

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

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

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

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

В чем может быть проблема, может ли кто-нибудь мне помочь ....?

Ответы [ 15 ]

26 голосов
/ 06 июня 2013

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

ALTER TABLE `table_name`  AUTO_INCREMENT = 1
16 голосов
/ 08 сентября 2011

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

14 голосов
/ 10 октября 2012

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

Duplicate entry '127' for key 'PRIMARY'

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

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

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

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

7 голосов
/ 10 ноября 2015

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

5 голосов
/ 12 сентября 2012

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

3 голосов
/ 14 апреля 2016

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

ALTER TABLE `table_name`  AUTO_INCREMENT = 6221;

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

2 голосов
/ 21 августа 2014

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

1 голос
/ 07 февраля 2019

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

1 голос
/ 25 мая 2018

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

0 голосов
/ 26 апреля 2019

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

...