我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
我使用mysql并注册了root用户,适合我的解决方案如下:
mysql>设置会话sql_mode=(SELECTREPLACE(@@sql_mode,'ONLY_FUL_GROUP_BY','');
其他回答
如果您使用的是MySQL 8.0.11,则需要从sql模式中删除“NO_AUTO_CREATE_USER”。
在/etc/mysql/my.cn文件和[mysqld]头中添加以下行
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
MySQL 8.x的“优化器提示”呢?
例如:
SELECT /*+ SET_VAR(sql_mode='STRICT_TRANS_TABLES') */
... rest of query
更多信息:https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-提示集变量
试试看:
SET sql_mode = ''
社区注意:正如下面的答案所指出的,这实际上清除了当前启用的所有SQL模式。这不一定是你想要的。
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
使用MySQL 5.7.28版检查SELECT@@sql_mode;并使用更新
SET @@sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'