Назад | Перейти на главную страницу

Ошибка автоматического увеличения MySQL

У меня есть таблица с одним столбцом первичного ключа и автоматическим увеличением типа данных 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 и вернувшись обратно!