Вставка в MariaDb завершается неудачно, если пропустить поля не по умолчанию

Структура таблицы:

CREATE TABLE `setup_int` (
`key` VARCHAR(50) NOT NULL,
`val` INT(11) NOT NULL,
PRIMARY KEY (`key`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

Как вы можете видеть поля NOT NULL-Поля и не имеют значения по умолчанию.

Мы обновили до MariaDB 10.1.21 и теперь имеем следующую проблему:
Следующий запрос не выполняется без какого-либо сообщения об ошибке!

INSERT INTO `setup_int` (`key`) VALUES ('test');

Причина, по-видимому, заключается в отсутствии значения по умолчанию.

  • Если я добавлю значение по умолчанию в таблицу, вставка будет успешной.
  • Если я изменю NOT NULL в NULLвставка выполнена успешно.
  • Если я делаю это на MariaDB 10.1.20, вставка прошла успешно.
  • Если я сделаю вставку с обоими полями, вставка будет успешной.

Это работает:

INSERT INTO `setup_int` (`key`,`val`) VALUES ('test',0);

Вопрос заключается в следующем: что я могу сделать (некоторые настройки или что-то еще), чтобы сделать mariadb 10.1.21 для обработки этой ситуации, как и раньше. Я не могу изменить все таблицы прямо сейчас, и я не могу понизить рейтинг прямо сейчас.

Основная проблема заключается в том, что запрос, выполняемый PHP, возвращает true хотя вставить не удалось!

0

Решение

Посмотрите здесь: https://stackoverflow.com/a/2503938/1973205

И тогда вы можете установить переменные следующим образом: https://mariadb.com/kb/en/mariadb/sql-mode/

Как чистый логический факт, это правильно, что запрос не выполняется.

1

Другие решения

В основном вы устанавливаете ограничение, что значение val не должен быть NULL и это не удается, потому что вы пытаетесь установить его NULL,

(0 это не то же самое, что NULL.)

Значение по умолчанию устанавливается во время CREATE:

CREATE TABLE `setup_int` (
`key` VARCHAR(50) NOT NULL,
`val` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`key`)
)
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector