Поэтому я просто урезал таблицу, но теперь мой первичный ключ не будет автоматически увеличиваться. Каждый раз, когда я добавляю второй элемент в таблицу, он возвращается с 1062: Дублирует запись '0' для ключа 'PRIMARY'
Я подумал, что когда вы обрезаете таблицу, она просто сбрасывает автоинкремент обратно на 1.
Я ищу вокруг, что я мог бы сделать, но я встретил многих людей, которые просто усекались.
Что я сделал
"TRUNCATE TABLE mytable;"
Должно быть, я сделал что-то не так.
Эта ошибка не влияет на Mysql 5.0, и она повторяется в версиях 6.0 и 5.1.23 и 5.1BK.
См. Эту ссылку для доказательства
Следующим является легкодоступный и эффективный метод обхода – это ALTER значение autoinc после того, как таблица усечена.
Повторно инициализировать значение autoinc сразу после усечения
alter table tablename AUTO_INCREMENT = n;
/ * установить n по желанию * /
Из MySQL 5.0.13 счетчик AUTO_INCREMENT сбрасывается до нуля с помощью TRUNCATE TABLE, независимо от того, существует ли ограничение внешнего ключа.
Все, что вам нужно сделать, это:
SET FOREIGN_KEY_CHECKS = 0;
обрезайте свои таблицы и измените их на
SET FOREIGN_KEY_CHECKS = 1;
После запуска TRUNCATE обработчик таблицы не запоминает последнее используемое значение AUTO_INCREMENT, но начинает отсчет с самого начала. Это справедливо даже для MyISAM и InnoDB, которые обычно не повторяют значения последовательностей.
Пользователь этого запроса будет работать.
ALTER TABLE table_id
CHANGE table_id
table_id
INT (11) NOT NULL AUTO_INCREMENT