У меня есть таблица с одним столбцом первичного ключа и автоматическим увеличением типа данных int (11).
Когда я пытаюсь вставить в эту таблицу, я получаю следующую ошибку. Не удалось прочитать значение автоинкремента из запроса механизма хранения
Когда я перезапускаю службу MySQL, она работает нормально.
Я уверен, что это не проблема с «Превышено автоматическое увеличение числа», поскольку, когда я пытаюсь вставить извне, он вставляется правильно.
Это проблема с Auto Increment или какой-то другой.
Я видел такое же сообщение об ошибке в таблице с ключом bigint (20) и смотрел на вывод
mysql>show table status like 'my_big_table';
Он показал:
Auto_increment: 0
когда это должно было быть:
Auto_increment: 2157452851
(поскольку последняя вставленная строка имела значение ключа 2157452850) Не было объяснения, почему Auto_increment перешел на значение 0, но оно блокировало вставки нашим приложением.
Я пытался сделать ALTER TABLE
чтобы изменить значение Auto_increment, но было очевидно, что вся таблица будет перестроена, что для таблицы такого размера заняло бы много часов, поэтому я отменил изменение.
Решение, которое я нашел, заключалось в том, чтобы явно добавить строку со следующим значением ключа:
mysql> INSERT INTO `my_big_table` VALUES (2157452851,22808084,71,36376,'2013-03-16 15:09:55','2013-03-16 15:07:18','2013-03-16 15:09:55','Sent',NULL,7426);
Query OK, 1 row affected (0.03 sec)
Это исправило значение Auto_index.
mysql> show table status like 'my_big_table'\G
Auto_increment: 2157452852
Надеюсь, это поможет кому-то другому.
По сути, это ошибка MySQL, которая вызывает проблему, но ее можно обойти. Проблема возникает, когда значение Auto-Increment таблицы превышает установленный предел.
Просто запустите этот SQL-запрос в MySQL, чтобы исправить ошибку.
ИЗМЕНИТЬ ТАБЛИЦУ table_name
AUTO_INCREMENT = 1
Table_name - это имя таблицы, в которой вы обнаружили ошибку при вставке данных. Не беспокойтесь о значении Auto_Increment, даже если в вашей таблице есть записи.
Когда я пытаюсь вставить в эту таблицу, я получаю следующую ошибку. Не удалось прочитать значение автоинкремента из хранилища запрос двигателя
Это может быть ошибка MySQL (# 35602,# 42566). Пытаться этот обходной путь.
На wamp, где версия mysql 5.1.30 работает на Windows 7 64bit, это не сработало. При запуске alter table что-то происходит (я вижу измененные строки), но значение не фиксируется, поэтому после обновления оно возвращается к нулю. Таинственным образом удалив auto_increment из ключа и вернув его обратно, вернулось значение auto_increment. Вероятно, это 64-битные проблемы, но надеюсь, что кто-то сэкономит часы, решив эту проблему, сбросив идентификатор ключа на не auto_increment и вернувшись обратно!