如何在MySQL中永久设置sql_mode?

如何在MySQL中永久设置sql_mode?

当我们在使用MySQL时,有时为了保护数据完整性以及避免出现意外错误,需要在MySQL中设置sql_mode来限制一些不规范的操作。但是在默认情况下,MySQL的sql_mode是没有开启的。那么在MySQL中如何永久设置sql_mode呢?下面让我们一起来了解一下。

阅读更多:MySQL 教程

什么是sql_mode?

sql_mode是MySQL的一个参数,它控制MySQL服务器的SQL语法和数据校验行为,对于查询、插入、更新、删除等操作都起着重要的作用。通过设置sql_mode,我们可以限制一些不规范的操作,比如:

  • 禁止使用未定义的变量名
  • 禁止将NULL插入非NULL列中
  • 当查询、更新时,如果某个列的值为NULL,则结果集返回NULL而不是空字符串
  • 禁止使用未定义的列名

等等。

设置sql_mode的方法

在MySQL中,设置sql_mode有两种方法:一种是在连接时间设置,一种是在MySQL启动参数中设置。

方式一:在连接时间设置

我们可以在连接MySQL数据库时,设置sql_mode。这种方式设置的sql_mode只对当前连接有效,对于其他的连接则不会生效。

可以使用如下命令来设置:

SET SESSION sql_mode='YOUR_SQL_MODE';

其中YOUR_SQL_MODE是你想要设置的sql_mode,多个sql_mode用逗号隔开。

例如:

SET SESSION sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO';

方式二:在MySQL启动参数中设置

我们也可以在MySQL的启动参数中,设置sql_mode。这种方式是在MySQL服务启动时就会生效,在后续的所有连接中都有效。

方法如下:

  • 打开MySQL的配置文件my.cnf
sudo vi /etc/mysql/my.cnf
  • 在[mysqld]节点下面添加如下行:
sql_mode = 'YOUR_SQL_MODE'

其中YOUR_SQL_MODE是你想要设置的sql_mode,多个sql_mode用逗号隔开。

例如:

[mysqld]
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO
  • 保存文件,并重启MySQL服务:
sudo service mysql restart

查看当前sql_mode

我们可以使用以下命令来查看当前MySQL的sql_mode设置:

SELECT @@SESSION.sql_mode;

该命令返回的是当前连接的sql_mode设置。

如果要查看MySQL服务器的sql_mode设置,我们可以使用如下命令:

SELECT @@GLOBAL.sql_mode;

该命令返回的是MySQL服务器全局的sql_mode设置。

永久设置sql_mode

如果我们想要在MySQL中永久设置sql_mode,可以使用前面的方式二,在MySQL的启动参数中设置。

当MySQL服务启动时,会加载配置文件my.cnf中的设置,并将其作为默认设置。这样做,就能够在MySQL服务重新启动时,自动应用我们所设置的sql_mode了。

结论

通过本文的介绍,我们了解了在MySQL中如何设置sql_mode参数的方法。这些方法可以帮助我们保护数据完整性,避免一些意外错误的发生,让我们的数据库使用更加安全可靠。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程