[博学谷学习记录]超强总结,用心分享|软件测试之MySQL报错1055解决

这篇博客主要介绍了在MySQL数据库操作中遇到的1055错误,该错误源于sql_mode中的ONLY_FULL_GROUP_BY设置。作者提供了两种解决方案:一种是永久修改MySQL配置文件去除该限制,另一种是临时关闭ONLY_FULL_GROUP_BY。通过详细步骤指导,读者可以自行解决此类问题。
摘要由CSDN通过智能技术生成

       

目录

一、报错问题描述:

二、报错问题原因:

三、解决报错的思路:

四、解决方案:

        本周开始学习数据库相关知识,首先学习的是建表操作。检查了很多次,确定代码无误,且刷新了很多次,都没有成功出现新建的表格。于是向老师求助,在断开链接数据库又重新链接数据库后,出现了新建的表格。后又重复尝试执行命令,insert插入数据、update更新数据、delete删除数据,此类语句都会报错1055,非常苦恼,影响日常使用,所以第一次尝试自己查询网上的方法并独立解决问题。同时也把自己查询的原因及解决办法记录下来,供大家参考。

一、报错问题描述:

在MySQL数据库查询下,执行SQL建表命令或插入数据命令。错误提示示例:

二、报错问题原因:

在MySQL 5.7以后,sql_mode中默认设置中有ONLY_FULL_GROUP_BY,SQL句子未通过ONLY_FULL_GROUP_BY词义查验,因此导致了报错。

ONLY_FULL_GROUP_BY规定select句子中查询出的列必须是确立的(其他语句也是如此)。

三、解决报错的思路:

解决报错的方法有两种:第一种便是把这类限制除掉,让我们的SQL语句像5.7版本之前的那样能跑。第二种就是修改sql:依照规定要求的标准重新写整个项目中全部会报错的sql。很明显的是,第二种方法会带来很大的复杂度,而且万一某个SQL语句改写不到位,会继续报错,所以这种方案也具有一定的风险。

因此,我们最好是选择第一种方式,试试看能否将此类限制永久的去掉,这样以后使用过程中更为方便。而如何去掉,请仔细查看以下解决方案。

四、解决方案:

1.永久解决

1)在MySQL下执行语句SELECT @@sql_mode

2)将查询结果中的ONLY_FULL_GROUP_BY除掉随后拷贝,找到MySQL的配置文件并打开,将sql_mode的值设定为拷贝的值

(若沒有sql_mode在[mysqld]正下方加上一行就可以)。

MySQL配置文件所在位置:安装版可根据windows服务相匹配的mysql开机启动项,查询其相匹配的属性->exe文件的路径,获得my.ini文件的路径。

免安装版一般在其根目录下。(默认文件名是my-default.ini,务必将其改成my.ini才可以起效)。

3)再次开启MySQL服务即可生效

2.暂时关掉ONLY_FULL_GROUP_BY

1)首先,利用用管理员身份运行cmd,进到到mysql的安装路径下的bin文件目录,用管理员账号登录mysql数据库。

2)随后输入命令mysql –h localhost –uroot –p在其中-h是特定IP地址或IP地址,-u是特定客户,-p是指用登录密码。

3)然后输入命令select @@global.sql_mode;能够查询全局sql_mode的值。请注意:这里的“;”是不可以省去的。

4)再键入 set @@global.sql_mode = (select replace(@@global.sql_mode,‘ONLY_FULL_GROUP_BY’,’’));执行后就可以修改@@global.sql_mode。

5)最后再次连接一下数据库,执行语句,就不会报错了。但是注意:这种方法是一次性的,只能解决一次,如果重启数据库,它又会再次报错的。

以上就是对于MySQL 1055报错的总结和解决的方案,希望能够解决你的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值