MySQL:永久设置sql_mode



通过MySQL命令行客户端,我正在尝试设置全局MySQL_mode:

SET GLOBAL sql_mode = TRADITIONAL;

这适用于当前会话,但在我重新启动服务器后,sql_mode会返回到默认值:",一个空字符串。

如何将sql_mode永久设置为传统?

如果相关,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"

并重新启动服务器

对于windows上的mysql8:

# Set the SQL mode to strict
sql-mode="NO_ENGINE_SUBSTITUTION"

它是一个破折号,而不是下划线:sql_mode/sql模式

如果您使用的是Digital Ocean,则会模拟mysql cnf文件,并且实际上不会与数据库进行真正的交互。在这种情况下,您使用(对于空白sql模式)设置sql模式。。。

doctl databases sql-mode set DB-UUID ""

如果你不知道你的DB UUID,请使用:查看

GET DB UUID with: doctl databases list

来源:digitalocean.com:doctl数据库sql模式集

相关内容

  • 没有找到相关文章

最新更新