京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查标题(windows)

2024-11-2 22:37| 发布者: 4d5a8576d| 查看: 141| 评论: 0

摘要: 目录mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查1.查询SQLMODE2.临时修改sql-mode实验SQL3.永久修改sql-mode总结mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查 低版本的MYSQL情况中的Sql在MySQL8中报错出现 [cod
目录

mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查

低版本的MYSQL情况中的Sql在MySQL8中报错出现

[code]this is incompatible with sql_mode=only_full_group_by[/code]

由于开启了ONLY_FULL_GROUP_BY的设置,如果select 的字段不在 group by 中,
而且select 的字段未使用聚合函数(SUM,AVG,MAX,MIN等)的话,那么这条sql查询是被mysql以为非法需。

要对MySQL8中sql_mode进行设置。

1.查询SQLMODE

[code]select @@GLOBAL.sql_mode;[/code]

2.临时修改sql-mode实验SQL

[code]SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; [/code]

注:

此办法全局见效,如果以创建的表空间依旧无效,需要切换到对应的表空间,再次实验修改sql-mode

[code]use database_name; SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; [/code]

以上实验后请实验刷新​​​​​​

[code]flush privileges;[/code]

3.永久修改sql-mode

用记事本直接打开my.ini文件,在文件中增长以下设置,再重启mysql服务。

[code]# Set the SQL mode to strict # sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"[/code]

注1:

  • 如果使用记事本编辑保存后,可能会启动失败,需要检查文件编码格式,
  • 记事本默认编码格式UTF-8,my.ini文件需要ANSI格式,发起直接另存为覆盖文件。

注2:

  • 按上述办法修改my.ini文件后重启MySQL发现依旧无效,此时需检测MySQL读取的my.ini路径是否正确。
  • 实验下方SQL,查询读取my.ini路径。
  • 如果发现此路径下没有my.ini文件需要手动新建一个my.ini文件。
[code]show variables like 'datadir';[/code]

总结

以上为个人履历,希望能给大家一个参考,也希望大家多多支持脚本之家。


来源:https://www.jb51.net/database/327014krg.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-2 02:46 , Processed in 0.029036 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部