解决MySQL错误:this is incompatible with sql_mode=only_full_group_by 的过程

2024-01-02 302 0

最近在倒腾魔方系统的V10业务管理系统,在本地开发的时候迁移线上的数据库到本地发现了一些报错

如何修复 SQLSTATE[42000]:语法错误或访问冲突:1055?

问题:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

原因:

根据 MySQL 文档2 ,在 SQL 模式下使用唯一的完整 group by 模式将拒绝选择列表、HAVING 条件或 ORDER BY 列表引用既未在 GROUP BY 子句中命名也不在功能上相关的非聚合列的查询在 GROUP BY 列上。

解决方案:

我们可以在查询中进行所需的更改来解决 SQL 模式。在我们的例子中,我们使用第二个选项绕过了错误。

运行以下MySQL命令以root用户登录MySQL并查看现有值

sudo mysql -u root -p 
mysql> SELECT @@global.sql_mode;

保留现有值的备份,以确保我们能够在需要时恢复更改。现在运行以下命令进行所需的更改。

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

另一种可能的解决方案是直接在 my.cnf 文件上进行更改。您可以使用以下命令找到 my.cnf 文件。在我们的例子中,我们采用了第二个选项,将条目添加到“my.cnf”文件中。

find / -name my.cnf

在我们的例子中,路径是“ /etc/mysql/my.cnf ”。现在修改 my.cnf 文件以在 mysqld 块中添加所需的 sql_mode。例如,

[mysqld]

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

重新启动 MySQL 服务以使更改生效。

    相关文章

    2025年华纳云新年焕新季,香港云4H4G3M特惠696元/年,E5物理服务器688元/月起
    暖冬特惠:华纳云服务器3折狂欢 E5服务器50M CN2惠享688元/月 续费同价
    至简魔方-dcim提示DHCP realy是否正确配置 安装系统一直卡在0%
    魔方NAT主机NAT设置端口转发,设置网站以及域名
    智简魔方DCIM系统如何使用API对接魔方财务系统
    Telegram Bot 收不到普通群聊消息的问题

    发布评论