MySQL:永久设置sql_mode

Geo*_*ton 26 mysql sql-mode

通过MySQL命令行客户端,我试图设置全局mysql_mode:

SET GLOBAL sql_mode = TRADITIONAL;
Run Code Online (Sandbox Code Playgroud)

这适用于当前会话,但在我重新启动服务器后,sql_mode恢复为默认值:'',一个空字符串.

如何将sql_mode永久设置为TRADITIONAL?

如果相关,MySQL是WAMP包的一部分.

谢谢.

Mic*_*rie 23

MySQL sql_mode "TRADITIONAL",又名"严格模式",由MySQL文档定义为:

将不正确的值插入列时"给出错误而不是警告".

以下是如何确保将sql_mode设置为"TRADITIONAL".

首先,检查您当前的设置:

mysql
mysql> SELECT @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
|                   |
+-------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这返回空白,默认情况下,这是错误的:您的sql_mode未设置为"TRADITIONAL".

所以编辑配置文件:

sudo vim /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

在标记为的部分添加此行[mysqld]:( sql_mode="TRADITIONAL"如fancyPants指出)

然后重启服务器:

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

然后再次检查:

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)
Run Code Online (Sandbox Code Playgroud)

成功!你现在很金.

  • @dragonfire它的`sql_mode`不是`sql-mode`.我现在只是尝试了它并设置`sql_mode =""`并重新启动服务器以清除所有设置. (2认同)

fan*_*nts 21

将其添加到my.cnf文件(如果您使用的是Windows,则添加到my.ini):

sql_mode="TRADITIONAL"
Run Code Online (Sandbox Code Playgroud)

并重新启动服务器