省略非默认字段时,在 MariaDb 上插入失败

Insert on MariaDb fails when ommitting non-default fields

Table结构:

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');

原因似乎是缺少默认值。

这个有效:

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

问题是:我能做些什么(一些设置,或其他)让 mariadb 10.1.21 像以前一样处理这种情况。我现在无法更改所有 table,我现在也无法降级。

主要问题是PHPreturnstrue执行的查询虽然插入失败了!

看这里:

然后你可以这样设置变量:https://mariadb.com/kb/en/mariadb/sql-mode/

作为一个纯逻辑事实,查询失败是正确的。

基本上你设置了一个约束,即 val 的值不能是 NULL 并且它失败了,因为你试图将它设置为 NULL.

(0NULL 不同。)

CREATE期间设置默认值:

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