sql_mode

mysql> select @@sql_mode
-> ;
+——————————————————————————————————————————————-+
| @@sql_mode |
+——————————————————————————————————————————————-+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+——————————————————————————————————————————————-+
1 row in set

mysql> set sql_mode =’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
Query OK, 0 rows affected

mysql> select @@sql_mode;
-> select @@sql_mode;
1193 - Unknown system variable ‘sql_mode;’
mysql> select @@sql_mode;
+————————————————————————————————————————+
| @@sql_mode |
+————————————————————————————————————————+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+————————————————————————————————————————+
1 row in set

mysql>

### 修改 MySQLSQL 模式 MySQL 的 `sql_mode` 是一个非常重要的配置,它定义了 MySQL 应该支持哪些 SQL 语法以及执行哪些数据验证检查。可以通过配置文件或运行时命令来设置或修改 `sql_mode`。 #### 通过配置文件设置 `sql_mode` 在 MySQL 的配置文件(如 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`)中设置 `sql_mode` 是一种持久化修改方式。可以在 `[mysqld]` 部分添加或修改 `sql_mode` 参数,如下所示: ```ini [mysqld] sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' ``` 配置完成后,需要重启 MySQL 服务以使更改生效: ```bash sudo systemctl restart mysqld ``` #### 通过运行时命令设置 `sql_mode` 如果需要临时修改 `sql_mode`,可以在 MySQL 命令行客户端中执行以下命令: ```sql SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; ``` 此命令会立即生效,但重启 MySQL 服务后会恢复为配置文件中的设置。 #### 验证当前的 `sql_mode` 可以通过以下 SQL 查询来验证当前的 `sql_mode` 设置: ```sql SELECT @@global.sql_mode; ``` #### 注意事项 - 在修改 `sql_mode` 时,需要注意某些模式已经被弃用。例如,在 MySQL 5.7 中,`ERROR_FOR_DIVISION_BY_ZERO`、`NO_ZERO_DATE` 和 `NO_ZERO_IN_DATE` SQL 模式已被弃用[^1]。 - 如果发现配置文件中的 `sql_mode` 设置不生效,可能是由于其他配置文件或环境变量覆盖了该设置。此时可以检查是否有其他配置文件(如 `/etc/mysql/conf.d/` 目录下的文件)影响了 `sql_mode`[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值