У меня есть этот столбец первичного ключа в tbl
:INSERT INTO таблица DEFAULT (key_col) вставляет ноль?
`id` INT(5) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
Когда я запускаю ниже запроса, ноль вставляется вместо очередного номера автоматического инкремента:
INSERT INTO `tbl` (id, col1, ...) VALUES (DEFAULT(id), "value 1", ...)
Самое смешное, это поведение Недавнее, заставив меня задаться вопросом, какие настройки я мог бы изменить, чтобы привести к этому.
Первое, что я рассматривал, было NO_AUTO_VALUE_ON_ZERO
. Я добавил это в файл sql_mode
в файле конфигурации, и теперь это то, что он есть: sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_VALUE_ON_ZERO
.
Я знаю, что когда DEFAULT(id)
заменяется на NULL
, автоматический номер генерируется, как ожидалось; но, как и сейчас, мое приложение создает первое, а не последнее.
Мои вопросы:
Есть параметр, который может позволить
DEFAULT(id)
генерировать следующий авто номер?Какие другие изменения в прикладной среде могли бы привести к этому?
Я прошу их, потому что это поведение (вставка нуля) не было до недавнего времени.
Зачем вам нужен ПО УМОЛЧАНИЮ (id)? Не можете ли вы опустить его, чтобы поле получало значение автоматического увеличения? –
какая версия mysql вы используете? –
@ user3571366: Я мог бы опустить, но это потребует значительных изменений в приложении. Если бы я мог избежать этого, это было бы лучше. –