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

时间:2016-07-20 01:44:59

标签: mysql mariadb

我可以找到关于MySql和MariaDB中的严格模式的大量信息,但没有关于何时使用它的信息。这在某种程度上是常识,但我仍然希望有一些一般性的指导方针。例如,也许你:

  • 始终使用严格模式
  • 绝不使用严格模式
  • 始终对具有财务数据的表使用严格模式

1 个答案:

答案 0 :(得分:0)

首先,来自MySQL documentation

  

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

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

严格模式也是default on MariaDB,因为> 10.2.3。

  • 获取当前模式: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=变量。