禁用ONLY_FULL_GROUP_BY

时间:2014-05-28 20:21:29

标签: mysql mysql-workbench

我不小心启用了ONLY_FULL_GROUP_BY模式:

SET sql_mode = 'ONLY_FULL_GROUP_BY';

如何禁用它?

33 个答案:

答案 0 :(得分:890)

解决方案1: 从mysql控制台

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

您可以阅读更多here

解决方案2:从phpmyadmin移除 ONLY_FULL_GROUP_BY

  • 打开phpmyadmin&选择localhost
  • 点击菜单Variables&向下滚动sql模式
  • 点击编辑按钮更改值&删除 ONLY_FULL_GROUP_BY &点击保存。 enter image description here

答案 1 :(得分:330)

<强>更新

enter image description here

要保留当前的mysql设置并禁用ONLY_FULL_GROUP_BY我建议您访问您的phpmyadmin或您正在使用的任何客户端并输入:

SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me

下一个复制结果到您的my.ini文件。

薄荷sudo nano /etc/mysql/my.cnf

ubuntu 16及以上sudo nano /etc/mysql/my.cnf

ubuntu 14-16 /etc/mysql/mysql.conf.d/mysqld.cnf

注意! copy_me结果可以包含可能默认情况下修剪的长文本。确保复制全文!

旧答案:

如果要禁用永久错误&#34; SELECT列表的表达式#N不在GROUP BY子句中,并且包含非聚合列&#39; db.table.COL&# 39;它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by &#34;不兼容做那些步骤:

  1. sudo nano /etc/mysql/my.cnf
  2. 将此内容添加到文件末尾

    [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"
    
  3. sudo service mysql restart重启MySQL

  4. 这将禁用所有用户

    ONLY_FULL_GROUP_BY

答案 2 :(得分:183)

小心使用

SET sql_mode = '' 

这实际上清除了当前启用的所有模式。如果您不想弄乱其他设置,那么您将要执行

SELECT @@sql_mode 

首先,要获取以逗号分隔的启用模式列表,然后将其设置为此列表而不使用ONLY_FULL_GROUP_BY选项。

答案 3 :(得分:98)

尝试一下:

SET sql_mode = ''

社区注意:正如下面的答案所指出的,这实际上清除了所有当前启用的SQL模式。这可能不一定是你想要的。

答案 4 :(得分:95)

    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;

答案 5 :(得分:60)

只向sql_mode添加一种模式而不删除现有模式:

SET sql_mode=(SELECT CONCAT(@@sql_mode,',<mode_to_add>'));

仅从sql_mode中删除特定模式而不删除其他模式:

SET sql_mode=(SELECT REPLACE(@@sql_mode,'<mode_to_remove>',''));

在您的情况下,如果您只想删除ONLY_FULL_GROUP_BY模式,请使用以下命令:

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

参考:http://johnemb.blogspot.com/2014/09/adding-or-removing-individual-sql-modes.html

答案 6 :(得分:40)

感谢@cwhisperer。 我在Symfony应用程序中遇到了与Doctrine相同的问题。我刚刚将选项添加到我的config.yml:

doctrine:
    dbal:
        driver:   pdo_mysql
        options:
            # PDO::MYSQL_ATTR_INIT_COMMAND
            1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"

这对我来说很好。

答案 7 :(得分:28)

在:

  • Ubuntu 14.04
  • mysql Ver 14.14 Distrib 5.7.16,for Linux(x86_64)using EditLine wrapper

执行:

$ sudo nano /etc/mysql/conf.d/mysql.cnf

复制并粘贴:

[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

到文件底部

$ sudo service mysql restart

答案 8 :(得分:26)

我注意到只要MySQL服务器没有重启,@ Eyo Okon Eyo解决方案就可以工作,然后恢复默认设置。这是一个对我有用的永久性解决方案:

要删除特定的SQL模式(在本例中为 ONLY_FULL_GROUP_BY ),请找到当前的SQL模式:

SELECT @@GLOBAL.sql_mode;

复制结果并从中删除您不需要的内容( ONLY_FULL_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

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_FULL_GROUP_BY价值拒绝,你可以read more about it here

答案 9 :(得分:23)

MySQL documentation还指定了以下方法:

  • 在my.cnf(Unix操作系统)或my.ini(Windows)等选项文件中设置sql-mode="<modes>"
  • 要通过命令行在服务器启动时设置SQL模式,请使用--sql-mode="<modes>"选项。

*其中<modes>是由逗号分隔的不同模式的列表。

要显式清除SQL模式,请在命令行上使用--sql-mode=""将其设置为空字符串,或在选项文件中将其设置为sql-mode=""

我将sql-mode=""选项添加到/etc/my.cnf,但它确实有效。

This SO solution讨论了找出MySQL使用哪个my.cnf文件的方法。

在进行更改后不要忘记重启MySQL。

答案 10 :(得分:18)

如果您正在使用WAMP。 左键单击WAMP图标,然后转到MySQL - &gt; MySQL设置 - &gt; SQL模式 然后选择sql-mode-&gt;用户模式

Checkout this image

答案 11 :(得分:10)

在我的sql(在Mac OS X上运行的版本5.7.11)上,我在mysql shell客户端上工作:

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 5.6文档,sql_mode默认为

MySQL 5.6.5中的

空白字符串,然后返回 NO_ENGINE_SUBSTITUTION,5.6.6 +中的STRICT_TRANS_TABLES

mysql 5.6 reference

答案 12 :(得分:10)

在MySQL 5.7和Ubuntu 16.04上,编辑文件mysql.cnf。

$ sudo nano /etc/mysql/conf.d/mysql.cnf

包括如下所示的sql_mode并保存文件。

[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

观察到,在我的情况下,我删除了模式STRICT_TRANS_TABLES和ONLY_FULL_GROUP_BY。

这样做,它将永久保存模式配置。不同的是,如果您只是通过MySQL更新@@ sql_mode,因为它将在重启机器/服务时重置。

之后,要修改配置,请重新启动mysql服务:

$ sudo service mysql restart

尝试访问mysql:

$ mysql -u user_name -p

如果您能够登录并访问MySQL控制台,那就没问题。太好了!

但是,如果像我一样,你会遇到错误“未知变量sql_mode”,这表明 sql_mode mysqld ,您将不得不返回,再次编辑mysql.cnf文件并将[mysql]更改为[mysqld]。重新启动MySQL服务并尝试在MySQL控制台上登录进行最后一次测试。在这里!

答案 13 :(得分:5)

我正在使用教条,我在doctrine.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。

答案 14 :(得分:5)

如果您正在使用MySQL 8.0.11,则需要从sql-mode中删除“NO_AUTO_CREATE_USER”。

在文件/etc/mysql/my.cnf和[mysqld]标题

中添加以下行
[mysqld]

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

答案 15 :(得分:4)

对于Mac OS Mojave(10.14)打开终端

$ sudo mkdir /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ cd /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ sudo nano my.cnf

粘贴以下内容:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

保存和退出nano的快捷键:Ctrl+xyEnter

注意: :您可能需要在以下命令中更新mysql-5.7.24-macos10.14-x86_64,只需检查/usr/local/

希望它将对某人有所帮助!

答案 16 :(得分:3)

sql_mode添加或删除模式

MySQL 5.7.9或更高版本

要在sql_mode中添加或删除模式,可以使用list_addlist_drop函数。

要从当前的SESSION.sql_mode中删除模式,可以使用以下方法之一:

SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY');
SET sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');

要从GLOBAL.sql_mode中删除一个在当前运行时操作中持续存在的模式,直到该服务重新启动

SET GLOBAL sql_mode = sys.list_drop(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY');

MySQL 5.7.8或更低版本

由于sql_mode值是模式的CSV字符串,因此您需要确保该字符串不包含残留逗号,这可以通过使用TRIM(BOTH ',' FROM ...)来实现。

要从sql_mode变量中删除模式,您可能希望将REPLACE()TRIM()一起使用,以确保删除所有残留的逗号。

SET SESSION sql_mode = TRIM(BOTH ',' FROM REPLACE(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));

要将模式添加到sql_mode变量中,您将要使用CONCAT_WS(',', ...)(以确保在逗号和当前模式后添加逗号)和TRIM()(以确保删除任何剩余的逗号)

SET SESSION sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@SESSION.sql_mode));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@GLOBAL.sql_mode));
  

注意:更改GLOBAL变量不会传播到SESSION变量,直到建立新连接为止。

     

GLOBAL变量将一直存在,直到重新启动正在运行的服务。

     

SESSION变量将在当前连接中保留,直到关闭连接并建立新连接为止。


还原为GLOBAL.sql_mode

由于SET sql_mode = 'ONLY_FULL_GROUP_BY';是在没有GLOBAL修饰符的情况下执行的,因此更改仅影响当前的SESSION状态值,该状态值也与@@sql_mode有关。要删除它并恢复为服务器重新启动时的全局默认值,您需要使用@@GLOBAL.sql_mode中的值。 [sic]

  

当前SESSION的值仅对当前连接有效。   重新连接到服务器会将值恢复为GLOBAL   值。

要将当前会话状态值恢复为当前全局值,可以使用以下之一:

SET SESSION sql_mode = @@GLOBAL.sql_mode;
SET @@sql_mode = @@GLOBAL.sql_mode;
SET sql_mode = @@GLOBAL.sql_mode;

SESSION.sql_mode的值更改为ONLY_FULL_GROUP_BY

SET sql_mode = 'ONLY_FULL_GROUP_BY';
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+--------------------+----------------------------------------------+
| @@sql_mode         | @@GLOBAL.sql_mode                            |
+--------------------+----------------------------------------------+
| ONLY_FULL_GROUP_BY | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+--------------------+----------------------------------------------+

SESSION.sql_mode的值恢复为GLOBAL.sql_mode的值

SET sql_mode = @@GLOBAL.sql_mode;
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+----------------------------------------------+----------------------------------------------+
| @@sql_mode                                   | @@GLOBAL.sql_mode                            |
+----------------------------------------------+----------------------------------------------+
| NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------+----------------------------------------------+

服务器重新启动持久sql_mode

  

设置SQL mode   在服务器启动时,在命令上使用--sql-mode="modes"选项   行或选项文件中的sql-mode="modes",例如my.cnf(Unix   操作系统)或my.ini(Windows)。 [sic]

请查看您的MySQL版本,以确定受支持的默认modes

[mysqld]

sql-mode="NO_ENGINE_SUBSTITUTION" #default <= 5.7.4

答案 17 :(得分:3)

这是我为修复Mysql工作台而执行的操作:

在通过以下命令获得当前值之前

break;

后来我从列表中删除了ONLY_FULL_GROUP_BY键,并粘贴了以下命令

SELECT @@sql_mode 

答案 18 :(得分:2)

这是Ubuntu 14 +上MySql 5.7+的永久解决方案:

$ sudo bash -c "echo -e \"\nsql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"  >> /etc/mysql/mysql.conf.d/mysqld.cnf"
$ sudo service mysql restart
# Check if login attempt throws any errors
$ mysql -u[user] -p # replace [user] with your own user name

如果您能够无错误地登录 - 您现在应该全部设置。

答案 19 :(得分:2)

  1. 检查sql_mode的默认值:

    选择@@sql_mode;

  2. 通过执行以下查询从控制台中删除 ONLY_FULL_GROUP_BY:

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

  1. 同时将其从您的特定数据库中删除

使用数据库名称;

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

  1. 重启你的网络应用服务器

  2. 访问导致此问题的页面。它现在可以工作了。

  1. 在 my.cnf 文件中添加以下内容

    sql_mode="传统"

注意:如果你使用的是 mac my.cnf 可能会在这里/usr/local/etc/my.cnf

或者试试这个链接https://dev.mysql.com/doc/refman/8.0/en/option-files.html

  1. 重启 MySQL 服务器

    sudo /usr/local/bin/mysql.server restart

    brew 服务重启mysql

答案 20 :(得分:2)

对于MySql 8,您可以尝试这一方法。 (未在5.7上进行测试。希望它在那里也可以使用)

首先打开此文件

sudo vi /etc/mysql/my.cnf 并将以下代码粘贴到以上文件末尾

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

然后通过运行此sudo service mysql restart

重新启动mysql

答案 21 :(得分:2)

对于使用 cPanel / WHM 运行VPS /服务器的用户,您可以执行以下操作永久禁用ONLY_FULL_GROUP_BY

您需要root用户访问权限(在VPS或专用服务器上)

  1. 以root身份输入WHM并运行phpMyAdmin

  2. 单击变量,查找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
  1. 通过SFTP-SSH(根)连接到您的服务器,并下载文件/etc/my.cnf

  2. 使用本地PC上的文本编辑器my.cnf打开文件,然后将您在步骤(2)复制的整个行粘贴(在[mysqld]部分下),但删除{{1} }

例如粘贴:

ONLY_FULL_GROUP_BY,
  1. 保存# disabling ONLY_FULL_GROUP_BY sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 文件并将其上传回my.cnf

  2. 输入WHM并转到“ WHM>重新启动服务> SQL Server(MySQL)”并重新启动服务

答案 22 :(得分:1)

我正在使用mysql并已向root用户注册,因此适用于我的解决方案如下:

  

mysql> SET SESSION sql_mode =(选择   REPLACE(@@ sql_mode,'ONLY_FULL_GROUP_BY',''));

答案 23 :(得分:1)

从MySQL 5.7.x开始,默认的sql模式包括 ONLY_FULL_GROUP_BY 。 (在5.7.5之前,MySQL不会检测到功能依赖性,默认情况下未启用ONLY_FULL_GROUP_BY。)

ONLY_FULL_GROUP_BY :不确定的分组查询将被拒绝

有关更多详细信息,请查看sql_mode的文档

您可以按照以下两种方法之一来修改 sql_mode

方法1:

检查sql_mode的默认值:

SELECT @@sql_mode

通过执行以下查询,从控制台中删除ONLY_FULL_GROUP_BY

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

方法2:

访问phpmyadmin来编辑您的sql_mode

  • 登录phpmyadmin并打开localhost
  • 位于菜单项顶部的变量顶部,并搜索 sql模式
  • 单击“编辑”按钮以删除ONLY_FULL_GROUP_BY并保存 sql mode settings in phpmyadmin

答案 24 :(得分:1)

最好尝试在新项目上使用 ONLY_FULL_GROUP_BY,同时在现有站点和数据库上保持向后兼容。为此,我选择在我的类中分别加载 mysqli 和 PDO 时修改 SQL 模式。

对于 mysqli :

mysqli_query($this->link,"SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))");

对于 PDO 类:

PDO::MYSQL_ATTR_INIT_COMMAND => "SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"

PDO 初始化示例:

try {
    $dns     = 'mysql:host=localhost;dbname=' . $prod_db;
    $user    = _DBUSER_;
    $pass    = _DBPASS_;
    $options = array(
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
    );

    $db = new PDO($dns, $user, $pass, $options);
} 

catch(Exception $e) {
    mail("contact@xxxxxx.xx","Database Error ",$dns.",".$user);
    echo "Unable ot connect to mySQL : ", $e->getMessage();
    die();
} 

因此,在同一台服务器上创建的新类将适用于新的数据库标准。

答案 25 :(得分:1)

万一使用 Drupal 8 的人在 mysql 8 中遇到这个问题,我通过添加这段代码来覆盖默认配置来解决这个问题。

enter image description here

来源:https://www.drupal.org/project/drupal/issues/2856270

答案 26 :(得分:0)

在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'

答案 27 :(得分:0)

要注意的一件事,如果您在sql_mode上使用ANSI,

等效于REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,以及​​(从MySQL 5.7.5开始)ONLY_FULL_GROUP_BY。

请参见https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi

答案 28 :(得分:0)

这对我有用:

SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

答案 29 :(得分:0)

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-hints-set-var

答案 30 :(得分:0)

您可以使用配置文件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"

答案 31 :(得分:0)

在以下查询的帮助下禁用 ONLY_FULL_GROUP_BY。

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

并启用 ONLY_FULL_GROUP_BY 使用以下查询。

SET sql_mode = 'ONLY_FULL_GROUP_BY';

答案 32 :(得分:-1)

以下是我通过phpmyadmin仪表板更改Mysql配置的解决方案:

为了修复&#34;这与sql_mode = only_full_group_by&#34;不兼容: 打开phpmyadmin并转到主页并选择&#39;变量&#39;子菜单。向下滚动以查找sql​​模式。编辑sql模式并删除&#39; ONLY_FULL_GROUP_BY&#39;保存它。