📜  mysql中的严格模式(1)

📅  最后修改于: 2023-12-03 15:17:49.084000             🧑  作者: Mango

MySQL中的严格模式

MySQL的严格模式(strict mode)旨在强制执行更严格的数据插入、更新和选择行为,主要是为了确保数据的完整性和一致性。在严格模式下,如果数据不符合特定的要求,MySQL会生成相应的错误信息并拒绝这些操作。

开启严格模式

MySQL中的严格模式可以通过以下方式开启:

1. 修改配置文件

编辑MySQL配置文件my.cnf,在[mysqld]下加入如下代码:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2. 临时开启严格模式

在需要开启严格模式的会话中执行以下命令:

SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
严格模式的影响

在严格模式下,以下操作将会产生错误:

1. 日期和时间相关限制

NO_ZERO_IN_DATENO_ZERO_DATE模式下,要求日期和时间类型的值不能为'0000-00-00'或'0000-00-00 00:00:00'。

2. 整数和浮点数限制

ERROR_FOR_DIVISION_BY_ZERO模式下,对0进行除法运算将会产生错误。

3. 字符串相关限制

STRICT_TRANS_TABLES模式下,对于CHAR、VARCHAR、BINARY和VARBINARY类型的列,如果插入的数据长度超过列的定义长度,将会产生错误。

4. NULL限制

NO_AUTO_CREATE_USER模式下,如果插入的数据中想要插入NULL值,但这个值又没有明确地指定,MySQL将不会自动赋值为NULL,而是产生错误。

总结

开启MySQL严格模式可以帮助程序员尽可能地减少数据错误,保证数据的准确性和完整性,从而提高系统的安全性和可靠性。但也要注意,强制执行严格模式可能会影响系统性能,因此需要根据实际情况进行决策。