处理docker部署的mysql8在执行sql时报错[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause...

问题描述:

环境:本地docker部署的mysql8,系统Ubuntu 9.4.0-1ubuntu1~20.04.1
执行sql报错
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


解决方案:

查了一下mysql [Err] 1055 解决办法:
执行sql
SET sql_mode=(SELECT REPLACE(@@sql_mode,‘ONLY_FULL_GROUP_BY’,‘’));
可本次mysql运行解决,重启mysql失效。

在配置mysql.cnf的[mysqld]内新增sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 可长期有效
如果创建容器的时候docker -v挂载了位置,修改配置文件即可,悲剧的是当时我没有设置挂载位置。。
然后问题来了,得进docker内修改配置
发现docker内没有常用编辑工具vi、vim
安装apt install vim 提示没有apt 。。。
如下

bash-4.4# cat /proc/version
Linux version 5.15.0-46-generic (buildd@lcy02-amd64-007) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022
bash-4.4# vim
bash: vim: command not found
bash-4.4# apt install vim
bash: apt: command not found
bash-4.4# apt-get install vim
bash: apt-get: command not found

bash-4.4# cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

最终使用sed在第四行追加到位,重启mysql8容器解决问题

bash-4.4# sed -i '4a sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' /etc/my.cnf

sed -i ‘Na hello_world’ fileName
-i :直接修改读取的文件内容,而不是输出到终端。
N是在N行后面追加一行"hello_world"
a表示追加

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值