表格结构:
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
,尽管插入失败了!
答案 0 :(得分:1)
看看这里:https://stackoverflow.com/a/2503938/1973205
然后您可以设置如下变量:https://mariadb.com/kb/en/mariadb/sql-mode/
作为一个纯粹的逻辑事实,查询失败是正确的。
答案 1 :(得分:0)
基本上,您设置的约束条件是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`)
)