文章目录
- 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
- 局部修改配置
- windows修改配置
- Linux修改配置
sql_mode配置
ONLY_FULL_GROUP_BY
- 用于控制是否允许对查询结果进行分组,只允许完全分组,即分组字段必须在SELECT子句中出现。
STRICT_TRANS_TABLES
- 此选项限制在事务中执行的SQL语句,确保在事务中执行的所有修改操作都符合数据库约束(如非空、唯一等)。
- 如果启用此选项,则在执行插入、更新或删除操作时,如果遇到约束条件 violation,将引发错误,而不是忽略这些操作。
NO_ZERO_IN_DATE
- 此选项禁止在日期列中使用零日期。
- 如果启用此选项,则在插入或更新日期列时,如果提供的日期包含零值,将引发错误。
NO_ZERO_DATE
- 此选项禁止在日期列中使用零日期。
- 如果启用此选项,则在创建表时,如果日期列包含零日期,将引发错误。
ERROR_FOR_DIVISION_BY_ZERO
- 此选项在执行除以零的操作时,引发错误,而不是返回无限值。
- 如果启用此选项,则在执行除以零的操作时,将引发错误,而不是返回无限值。
NO_AUTO_CREATE_USER
- 此选项禁用创建新用户时自动授权。
- 如果启用此选项,则在创建新用户时,将不会自动授予任何权限。
NO_ENGINE_SUBSTITUTION
- 此选项阻止在创建表时使用未指定的存储引擎。
- 如果启用此选项,则在创建表时,如果未指定存储引擎,将引发错误。
局部修改配置
可以在命令窗口修改该配置,但此配置只维持该窗口。
select @@global.sql_mode;
将ONLY_FULL_GROUP_BY去掉即可。
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
若是该配置不成功,则使用下方配置。
set @@global.sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
windows修改配置
在windows系统的mysql修改配置,需要找到自己mysql的安装目录,修改my.ini配置文件。
若有sql-mode配置,则将配置修改即可,若没有需要将此配置添加。
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
Linux修改配置
同window类似,需要找到mysql的安装目录,修改my.cnf配置文件。
若有sql-mode配置,则将配置修改即可,若没有需要将此配置添加。
[mysqld]
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES