我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL设置only_full_group_by报错如何解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL设置only_full_group_by报错如何解决

这篇文章主要讲解了“MySQL设置only_full_group_by报错如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL设置only_full_group_by报错如何解决”吧!

开发环境连接的 mysql5.6,而测试环境是 mysql5.7。开发中有小伙伴写了有关 group bysql 语句。在开发环境中运行是正常的,而到了测试环境中就发现了异常。

原因分析:MySQL5.7 版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。

其中 ONLY_FULL_GROUP_BY 就是造成这个错误的罪魁祸首了,在这种严格模式下,对于 group by 聚合操作,若在 select 中的列没有在group by 中出现,那么这个 SQL 就是不合法的。因为开发写的 sql 中,select 列不在 group by 从句中,在使用 group by 时就会报错。

测试环境下载安装的是最新版的 mysql5.7.x 版本,默认是开启了 only_full_group_by 模式的。

1. 查看 sql_mode

SELECT` `@@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

2. 去掉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'``;

3. 上面是改变了全局sql_mode,对于新建的数据库有效。

对于已存在的数据库,则需要在对应的数据下执行

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'``;

以上方法mysql数据库重启后依然无效,下列方式重启后依然生效

找到 MySQL 的配置文件,在 linux 系统上 /etc/my.cnf 文件,查询 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

需要注意的一点是一定要添加在 [mysqld] 配置内,这样添加完后重启mysql 才会生效,退出数据库:exit,重启命令:

service mysqld restart

#lnmp重启mysql
lnmp restart mysql

刷新页面报错信息消失成功解决,再次连接上数据库查看 sql_mode 配置 select @@sql_mode :

STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

以下为sql_mode常用值的含义,参考:

ONLY_FULL_GROUP_BY:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制

NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。

感谢各位的阅读,以上就是“MySQL设置only_full_group_by报错如何解决”的内容了,经过本文的学习后,相信大家对MySQL设置only_full_group_by报错如何解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL设置only_full_group_by报错如何解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL设置only_full_group_by报错如何解决

这篇文章主要讲解了“MySQL设置only_full_group_by报错如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL设置only_full_group_by报错如何解决
2023-02-02

MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

​ 作为初学者,我们在使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情。 ​​ 出现这样的报错,并不
2023-08-17

win11设置中文报错如何解决

这篇文章主要介绍了win11设置中文报错如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win11设置中文报错如何解决文章都会有所收获,下面我们一起来看看吧。方法一:1、如果我们遇到类似于下图的无法设置情
2023-07-01

MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

目录前言​方法一:直接修改数据库配置方法二:修改数据库配置(永js久生效)方法三:使用 any_value() 或 group_concat()方法四:开动脑筋,修改代码总结前言​作为初学者,我们在使用mysql的时候总是会遇到各种各样的
2023-01-12

MySQL source报错如何解决

当MySQL的source命令报错时,可以通过以下步骤进行解决:1. 检查文件路径:确保要source的文件路径是正确的,并且文件存在。可以使用绝对路径或相对路径。2. 检查文件编码:如果要source的文件编码与MySQL服务器的字符集不
2023-09-26

mysql datetime报错如何解决

今天小编给大家分享一下mysql datetime报错如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-02-16

mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案

目录解决方法一(不推荐):临时sql_mode设置解决方法二:修改mysql的默认配置文件my.ini(永久配置,推荐)sql_mode=only_full_groandroidup_by问题产生原因:MySQL 5.7.5及以上功能依赖检
mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
2024-08-18

如何解决MySQL报错:语法错误

要解决MySQL报错:语法错误,可以按照以下步骤进行处理:1. 仔细检查SQL语句:首先检查SQL语句是否有拼写错误或者语法错误。确保所有的关键字、表名、列名等都是正确的,并且符合MySQL的语法规范。2. 使用MySQL命令行工具:如果报
2023-10-10

如何解决MySQL报错:错误编号

要解决MySQL报错,首先需要确定错误编号是什么。MySQL的错误编号是一个唯一标识符,可以帮助你更准确地查找和解决问题。以下是一些常见的MySQL错误编号以及解决方法:1. 错误编号:1064错误描述:语法错误解决方法:检查SQL语句是否
2023-10-12

如何解决MySQL报错:表已满

当MySQL报错表已满时,可能是由于以下几个原因导致的:1. 硬盘空间不足:检查硬盘空间是否已满,如果是,可以通过删除不需要的文件或者增加硬盘空间解决该问题。2. 表大小超过了MySQL的限制:MySQL有一个限制,每个表的大小不能超过操作
2023-10-12

mysql连接报错1045如何解决

MySQL连接报错1045通常表示用户名或密码错误,解决方法如下:检查用户名和密码是否正确:确保输入的用户名和密码是正确的,可以尝试使用MySQL的root用户登录来验证是否是用户名或密码错误导致的问题。检查主机限制:有时候MySQL数据库
mysql连接报错1045如何解决
2024-04-15

php mysql模块报错如何解决

本篇内容介绍了“php mysql模块报错如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php mysql模块报错是因为Ubuntu
2023-06-20

如何解决MySQL报错:SQL语法错误

要解决MySQL报错:SQL语法错误,可以按照以下步骤进行:1. 仔细检查错误信息:MySQL通常会提供有关错误的详细信息,包括出错的位置和具体错误原因。首先,仔细阅读错误信息,以了解出现错误的具体位置和原因。2. 检查SQL语句的语法:仔
2023-10-12

如何解决MySQL报错:MySQL意外关闭

当MySQL意外关闭时,可以采取以下步骤来解决问题:1. 查看错误日志:找到MySQL的错误日志文件,通常位于MySQL安装目录的data文件夹下。查看日志文件,查找任何可能的错误消息或警告。2. 重启MySQL服务:使用适当的方法重启My
2023-10-10

如何解决MySQL报错:未知命令

当MySQL报错“未知命令”时,可能是由于以下几个原因导致的:1. 输入的命令拼写错误或命令不存在:请检查您输入的命令是否正确,尤其是命令的拼写是否正确。可以参考MySQL官方文档或使用命令提示符自动补全功能来确认命令的正确性。2. MyS
2023-10-12

navicat连接mysql报错10060如何解决

这篇文章主要讲解了“navicat连接mysql报错10060如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“navicat连接mysql报错10060如何解决”吧!尝试过,1:开启m
2023-07-05

如何解决MySQL报错:表不存在

当MySQL报错“表不存在”时,可以按照以下步骤解决:1. 确认表名是否正确:首先检查表名是否拼写正确,并且注意大小写。在MySQL中,表名是区分大小写的。2. 检查数据库:确认当前操作的数据库是否正确。使用`USE`语句切换到正确的数据库
2023-10-10

mysql数据库1045报错如何解决

MySQL数据库1045错误通常表示连接到数据库时使用的用户名或密码无效。要解决这个问题,你可以尝试以下几个解决方法:1. 确保使用的用户名和密码是正确的:检查你使用的用户名和密码是否正确。特别注意大小写和任何特殊字符。2. 检查MySQL
2023-08-29

编程热搜

目录