mysql - 即使禁用了严格模式,MySQL 错误 1055
问题描述
即使禁用了严格模式,我在运行存储过程时仍然收到 ERROR 1055
在带有 MySQL 5.7.26 的 Ubuntu 19.04 上,我已经尝试了 my.cnf 中 sql-mode 选项的所有组合,并设置了全局,这很有意义。只包括 sql-mode = '',但它仍然表现得好像严格模式已打开。
mysql> SHOW VARIABLES LIKE 'sql_mode';
| Variable_name | Value
| sql_mode | IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
甚至 sql-mode 为空
mysql> SHOW VARIABLES LIKE 'sql_mode';
| Variable_name | Value |
| sql_mode | |
我收到 only_full_group_by 仍然存在的错误...
mysql> CALL getReadyToInvoiceOrders(480,-1,-1,'','','','','','');
ERROR 1055 (42000): Expression #14 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'axistms_transport_local.BPBCR.currentAwardedID' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
您可以看到“STRICT_TRANS_TABLES”和“ONLY_FULL_GROUP_BY”已被删除,但 ERROR 1055 仍然存在
解决方案
删除子句 ONLY_FULL_GROUP_BY :
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
MySQL 5.7 版本中 sql_mode 的默认设置为 ONLY_FULL_GROUP_BY、NO_AUTO_CREATE_USER、STRICT_TRANS_TABLES、NO_ENGINE_SUBSTITUTION
推荐阅读
- firebase - Firebase Cloud Functions - 当用户再次在线时发送通知用户?
- android - Android React-Native,如何在运行时更新 index.android.bundle 文件?
- powershell - PowerShell 递归中的后序遍历
- azure - 无法使用 Azure CLI 清除 Azure CDN 终结点
- javascript - 为什么我需要在承诺中解决响应
- mysql - 在不工作的时候按顺序和分组
- opencv - YoloV3:未定义符号:使用 OpenCV 构建时的 _ZN9_IplImageC1ERKN2cv3MatE
- php - 将来自 foreach 的数组值与另一个数组中的键/值相关联
- java - 从根 pom.xml 指向子文件夹 Pom.xml
- java - 支持流量控制的功能数据结构