2010-06-07 4 views
2

Я унаследовал проект, который мы пытаемся перенести в MySQL 5 из MySQL 4.0 (!) И из myISAM в InnoDB. Запросы теперь падают, потому что они строятся с использованием соединения ADODB -> qstr() по всем параметрам, включая int. Если значение не указано, я получаю:Вставка пустой строки в столбец auto_increment в MySQL 5

INSERT INTO tablename VALUES ('', 'stuff'...) 

, где первый столбец является auto_increment. Это вызывает ошибку (достаточно справедливо, поскольку «не является int»). Есть ли переключатель в MySQL, чтобы заставить его вести себя как раньше

ответ

1

Edit (я предполагаю, что это просто молча преобразуются в 0?):

Я просто побежал несколько тестов и то, что я написал ниже вон» ты вообще не поможешь. Ошибка связана с неправильным типом данных, и предложенная мной настройка SQL этого не меняет. Я оставлю этот ответ здесь, поскольку это может быть полезно кому-то другому.


Во-первых, дважды проверьте, что столбец действительно автоматическое приращение - пару раз я имел CREATE TABLE файлы, где тот факт, что колонка auto_increment печально отсутствует.

Другая вещь, которая может помочь, - проверить, что NO_AUTO_VALUE_ON_ZERO не включен.

SET SQL_MODE='' должен отключить его.

+0

SET SQL_MODE = '' похоже, делает трюк на самом деле, поскольку он отключает 'TRADITIONAL', который вызывает неправильный тип данных как ошибку, а не предупреждение –

+0

@QmunkE - ну как насчет этого. – nickf

Смежные вопросы