Структура таблицы:
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
вставка выполнена успешно. Это работает:
INSERT INTO `setup_int` (`key`,`val`) VALUES ('test',0);
Вопрос заключается в следующем: что я могу сделать (некоторые настройки или что-то еще), чтобы сделать mariadb 10.1.21 для обработки этой ситуации, как и раньше. Я не могу изменить все таблицы прямо сейчас, и я не могу понизить рейтинг прямо сейчас.
Основная проблема заключается в том, что запрос, выполняемый PHP, возвращает true
хотя вставить не удалось!
Посмотрите здесь: https://stackoverflow.com/a/2503938/1973205
И тогда вы можете установить переменные следующим образом: https://mariadb.com/kb/en/mariadb/sql-mode/
Как чистый логический факт, это правильно, что запрос не выполняется.
В основном вы устанавливаете ограничение, что значение 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`)
)