如何在MySQL中禁用严格模式?
对于更改数据的查询中缺少或不正确的值的处理由MySQL严格模式控制。这包括CREATE TABLE,UPDATE和INSERT语句。当尝试使用启用了MySQL严格模式(默认设置)的查询进行处理时,无效或缺失的数据可能会导致警告或故障。
当关闭严格模式时,相同的查询将修改其缺失或不正确的数据,并产生直接的警告。这看起来可能是期望的结果,但是关闭严格模式后,某些活动可能会产生意想不到的影响。例如,如果正在添加值并且它的字符数超过允许的数量,则它将被截断以适合。
MySQL的严格模式始终开启。可以通过几种不同的方式禁用它。
通过SQL禁用严格模式
以下命令可通过此方法在MySQL服务器上禁用严格模式。
mysql -u root -p -e "SET GLOBAL sql_mode ='NO_ENGINE_SUBSTITUTION';"
现在,您可以通过运行以下命令验证已设置的模式。
mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"
通过my.cnf / my.ini禁用严格模式:
- 要编辑,请启动my.ini或my.cnf文件(文件取决于您是否在运行Windows或Linux)。
- 找到以下行
sql_mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
- 将其更改为以下行:
如果找不到,请在[mysqld]部分下插入该行(如果没有[mysqld]部分,则创建它)。
以以下方式创建mysqlId:
sql_mode =""
-
要使修改生效,请重启MySQL服务。
如果现在无法重新启动,则可以进入数据库服务器并使用下面列出的命令立即使更改生效。如果未执行上述过程,则修改将在下次MySQL服务重新启动时丢失。
set global sql_mode ='';
无论为什么MySQL管理员必须禁用严格模式,都可以通过此方法在服务器上禁用MySQL严格模式。
此规则适用于标准版,标准(多语言)版,企业版(MySQL),企业多语言版(MySQL),企业版(SQL Server)和企业版(MySQL)(SQL Server)。