何时在 MySql 或 MariaDB 中使用严格模式

Kim*_*nce 8 mysql mariadb

我可以找到大量关于严格模式在 MySql 和 MariaDB 中的作用的信息,但没有关于何时使用它的信息。这在一定程度上是常识,但我仍然希望有一些一般准则。例如,也许您:

  • 始终使用严格模式
  • 从不使用严格模式
  • 始终对包含财务数据的表使用严格模式
  • 等等

Pab*_*o A 5

首先,来自MySQL 文档:

严格模式控制 MySQL 如何处理数据更改语句(如 INSERT 或 UPDATE)中的无效或缺失值。由于多种原因,值可能无效。例如,它可能具有错误的列数据类型,或者可能超出范围。当要插入的新行不包含在其定义中没有显式 DEFAULT 子句的非 NULL 列的值时,缺少值。(对于 NULL 列,如果缺少值,则插入 NULL。)严格模式也会影响 DDL 语句,例如 CREATE TABLE。

所以,正如@rick-james 所说:始终使用严格模式。也就是说,直到您厌倦了它的限制。该模式可以帮助您,但可能会很痛苦。

自 > 10.2.3 以来,严格模式也是MariaDB 的默认设置。

  • 获取当前模式:SHOW VARIABLES LIKE 'sql_mode';
  • 禁用:mysql> SET sql_mode = '';
  • 启用:(mysql> SET sql_mode = 'STRICT_ALL_TABLES';或STRICT_TRANS_TABLES)。

对于永久更改编辑/etc/mysql/my.conf,[mysqld]部分,sql_mode=变量。