我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
我意外启用了ONLY_FUL_GROUP_BY模式,如下所示:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
如何禁用它?
当前回答
以下是我通过phpmyadmin仪表板更改Mysql配置的解决方案:
为了修复“这与sql_mode=only_full_group_by不兼容”:打开phpmyadmin并转到主页,然后选择“变量”子菜单。向下滚动以查找sql模式。编辑sql模式并删除“ONLY_FUL_GROUP_BY”保存它。
其他回答
您可以使用配置文件my.cnf禁用它:
$ mysql --verbose --help | grep my.cnf
因此,在macOS 10.12中,它位于usr/local/etc/my.cnf。您可以在此处编辑sql_mode:
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
我使用的是原理,我在docrine.local.php中添加了driverOptions:
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'myusr',
'password' => 'mypwd',
'dbname' => 'mydb',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
),
),
),
),
));
在phpmyadmin中,用户需要在权限中激活SUPER。
使用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'
我注意到@Eyo-Okon-Eyo解决方案只要MySQL服务器没有重启,默认设置就会恢复。这里有一个对我有效的永久解决方案:
要删除特定的SQL模式(在本例中为ONLY_FUL_GROUP_BY),请查找当前的SQL模式:
SELECT @@GLOBAL.sql_mode;
复制结果并从中删除不需要的内容(ONLY_FUL_GROUP_BY)
例如。:
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
to
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
创建并打开此文件:
/etc/mysql/conf.d/disable_strict_mode.cnf
并将新的SQL模式写入其中:
[mysqld]
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:
sudo service mysql restart
或者您可以使用ANY_VALUE()抑制ONLY_FUL_GROUP_BY值拒绝,您可以在这里阅读更多信息
如果任何使用Drupal 8的人在mysql 8中遇到这个问题,我通过添加这段代码覆盖默认配置来解决这个问题。
资料来源:https://www.drupal.org/project/drupal/issues/2856270
选项,以防万一:
'init_commands' => array(
'sql_mode' => "SET sql_mode =''"
)