通过MySQL命令行客户端,我试图设置全局mysql_mode:
SET GLOBAL sql_mode = TRADITIONAL;
这适用于当前会话,但在我重新启动服务器后,sql_mode恢复为默认值:'',一个空字符串.
如何将sql_mode永久设置为TRADITIONAL?
如果相关,MySQL是WAMP包的一部分.
谢谢.
MySQL sql_mode "TRADITIONAL"
,又名"严格模式",由MySQL文档定义为:
将不正确的值插入列时"给出错误而不是警告".
以下是如何确保将sql_mode设置为"TRADITIONAL"
.
首先,检查您当前的设置:
mysql mysql> SELECT @@GLOBAL.sql_mode; +-------------------+ | @@GLOBAL.sql_mode | +-------------------+ | | +-------------------+ 1 row in set (0.00 sec)
这返回空白,默认情况下,这是错误的:您的sql_mode未设置为"TRADITIONAL".
所以编辑配置文件:
sudo vim /etc/mysql/my.cnf
在标记为的部分添加此行[mysqld]
:( sql_mode="TRADITIONAL"
如fancyPants指出)
然后重启服务器:
sudo service mysql restart
然后再次检查:
mysql mysql> SELECT @@GLOBAL.sql_mode; +------------------------------------------------------------------------------------------------------------------------------------------------------+ | @@GLOBAL.sql_mode | +------------------------------------------------------------------------------------------------------------------------------------------------------+ | STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
成功!你现在很金.
将其添加到my.cnf文件(如果您使用的是Windows,则添加到my.ini):
sql_mode="TRADITIONAL"
并重新启动服务器