设置全局的sqlmode
时间: 2023-10-01 14:09:26 浏览: 53
可以通过以下方式设置全局的sqlmode:
1. 在配置文件中设置
在 MySQL 配置文件(如 my.cnf 或 my.ini)中的 [mysqld] 段中添加以下语句:
```
sql-mode="mode1,mode2,mode3"
```
其中,mode1、mode2、mode3 为需要启用的 sqlmode,多个 sqlmode 以逗号分隔。
2. 在命令行中设置
可以在 MySQL 命令行中执行以下语句来设置 sqlmode:
```
SET GLOBAL sql_mode="mode1,mode2,mode3";
```
其中,mode1、mode2、mode3 为需要启用的 sqlmode,多个 sqlmode 以逗号分隔。注意,这种方式设置的 sqlmode 只对当前会话有效,重启 MySQL 后会失效。
3. 在运行时设置
可以在连接 MySQL 后,在 SQL 语句中执行以下语句来设置 sqlmode:
```
SET SESSION sql_mode="mode1,mode2,mode3";
```
其中,mode1、mode2、mode3 为需要启用的 sqlmode,多个 sqlmode 以逗号分隔。注意,这种方式设置的 sqlmode 只对当前连接有效,断开连接后会失效。
相关问题
mysql 查询全局的sqlmode
可以使用以下命令查询全局的sqlmode:
```sql
SELECT @@GLOBAL.sql_mode;
```
该命令会返回一个字符串,其中包含了当前MySQL实例全局的sqlmode设置。例如,返回结果可能类似于:
```
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
```
mysql my.ini设置SQL_MODE
MySQL的my.ini配置文件是用来设置MySQL服务器的一些全局参数,其中包括`sql_mode`选项,它控制了MySQL的行为模式,特别是对于一些SQL标准的兼容性和默认行为。`sql_mode`设置可以帮助确保数据的一致性和防止潜在的不安全操作。
`sql_mode`通常包含一组预定义的模式,如`STRICT_ALL_TABLES`、`NO_ENGINE_SUBSTITUTION`等,你可以单独启用或禁用这些模式,或者自定义一个模式组合。常见的设置可能包括:
1. `STRICT_ALL_TABLES`:开启严格模式,强制执行所有表级别的规则,如不允许NULL值插入NOT NULL列等。
2. `NO_ENGINE_SUBSTITUTION`:禁止MySQL在查询时自动选择存储引擎,确保使用指定的存储引擎。
3. `TRADITIONAL`:传统模式,遵循旧版本的MySQL行为,可能会影响某些SQL的处理。
4. `ERROR_FOR_DIVISION_BY_ZERO`:启用除以零错误,而不是返回NULL。
5. `ONLY_FULL_GROUP_BY`:确保每个GROUP BY字段都包含在SELECT列表中。
要设置`sql_mode`,在my.ini文件中添加类似这样的行:
```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服务以应用更改。