我刚刚在 Debian 9 和 mariadb 上设置了一个新的开发环境:10.1.26-MariaDB-0+deb9u1 Debian 9.1
以前的环境是带有 mysql 的 Debian 7:5.6.38-1~dotdeb+7.1 (Debian)
sql-mode 的值为:
MariaDB [(none)]> SHOW VARIABLES LIKE 'sql_mode'; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | sql_mode | NO_ENGINE_SUBSTITUTION | +---------------+------------------------+
对于数据库,列设置为 NOT NULL,没有默认值。(大多数只是 varchar/文本字段)
我无法插入新记录或更改现有记录。我使用的是 laravel/eloquent,如果我将连接选项设置为 strict=true,则会收到有关该列没有默认值的错误。
我所有的研究表明,我应该能够关闭严格模式以恢复旧功能,但是严格模式似乎并未打开。
我是否遗漏了某个配置选项?
答案1
找到允许不精确代码继续运行的设置并不是一个好主意。总有一天它会表现出错误的行为。
修复您的代码,向所有设置了值的列插入一个值NOT NULL
,并且没有默认值。
或者,如果某一列有一个有意义的默认值,则将表列更改为包含默认值。