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