Mysql sql_mode错误

Mysql sql_mode错误

在使用mysql GROUP BY语句时报错:

[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

需要关掉sql_mode=only_full_group_by

  • 查看sql_mode
mysql > SELECT @@GLOBAL.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
  • 去掉ONLY_FULL_GROUP_BY
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
### 如何使用 Navicat 修改 MySQLsql_mode 配置 在 Navicat 中修改 MySQL 的 `sql_mode` 设置,可以按照以下方法操作: #### 1. 查询当前的 SQL Mode 为了确认当前的 `sql_mode` 值,在 Navicat 中执行以下 SQL 语句来获取当前服务器的模式设置: ```sql SELECT @@GLOBAL.sql_mode; ``` 这将返回全局范围内的 `sql_mode` 设置[^2]。 如果需要查看当前会话中的 `sql_mode`,可运行以下命令: ```sql SELECT @@SESSION.sql_mode; ``` #### 2. 修改 Global Sql_Mode 要永久更改 MySQL 的 `sql_mode` 并使其在数据库重启后仍然有效,需编辑 MySQL 的配置文件(通常是 my.cnf 或 my.ini)。然而,也可以通过 Navicat 执行 SQL 来临时调整全局 `sql_mode`。例如,禁用 `ONLY_FULL_GROUP_BY` 模式,可以运行以下命令: ```sql SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; ``` 上述命令移除了默认启用的 `ONLY_FULL_GROUP_BY` 模式,并保留其他推荐的安全选项[^3]。 注意:此方式仅适用于具有管理员权限的用户,且不会持久化到下次服务启动。 #### 3. 修改 Session Sql_Mode 对于不需要影响整个系统的场景,可以在单一会话中动态修改 `sql_mode`。例如: ```sql SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; ``` 这种方式只会影响当前连接下的行为,关闭连接后即失效[^4]。 #### 4. 编辑 MySQL 配置文件实现持久化变更 若希望长期生效,则应手动编辑 MySQL 的配置文件 (my.cnf),并添加或更新 `[mysqld]` 下的 `sql_mode` 参数。完成后记得重启 MySQL 服务使改动生效[^1]。 --- ### 注意事项 - 如果直接通过 SET 命令修改 global sql_mode 后遇到权限不足的问题,请联系 DBA 授予适当权限或者由其协助完成。 - 调整 sql_mode 可能会对现有查询逻辑造成潜在风险,请务必测试新设定下应用的表现是否正常。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值