我用WAMP服务器在我的windows PC上使用MySQL 5.7.13

我的问题是在执行这个查询时

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`

我总是得到这样的错误

SELECT列表中的表达式#1不在GROUP BY子句中,包含未聚合的列returntr_prod.tbl_customer_pod_uploads。id',它不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by不兼容

你能告诉我最好的解决办法吗?

我需要这样的结果

+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
| id | user_id | load_id | bill_id | latitude | langitude | proof_type | document_type | file_name    | is_private | status | createdon           | updatedon           |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
|  1 |       1 | 78      | 1       | 21.1212  | 21.5454   |          1 |             1 | id_Card.docx |          0 | Active | 2017-01-27 11:30:11 | 2017-01-27 11:30:14 |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+

当前回答

这里有一个非常快速和简单的方法来永久设置它

注意:running SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY', "));是临时的,在服务器重新启动时,仍然会出现错误。 要永久修复这个问题,请执行以下操作

以根用户身份登录到服务器 在终端运行中 wget https://gist.githubusercontent.com/nfourtythree/90fb8ef5eeafdf478f522720314c60bd/raw/disable-strict-mode.sh 执行chmod +x disable-strict-mode.sh使脚本可执行 执行。/disable-strict-mode.sh

完成后,mysql将被修改,并将重新启动

其他回答

打开WAMP面板,打开MySQL配置文件。在其中,如果找到“sql_mode”,则搜索它,将其设置为“”,否则,如果没有找到它,则在文件中添加sql_mode=“”。

重新启动MySQL服务器,你就可以开始了…

快乐的编码。

如果你在Mac上使用MAMP,当你重新启动MAMP时,对MySQL变量的任何更改都将被擦除。要确保更改是永久性的,请执行以下操作:

停止正在运行的MAMP服务器。

使用文本编辑器创建一个名为my.cnf的文件,并将其保存到/Applications/MAMP/conf文件夹中。将文件放在文件夹的根目录下(这看起来有点奇怪,因为它包含了大量的apache文件夹,但这是可以的)。在文件中添加如下代码行:

[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

保存文件并关闭编辑器。 启动MAMP服务器。

这将使改变成为永久性的。

MySQL 8.0升级

你的sql-mode不会有NO_AUTO_CREATE_USER,因为它已经被删除了,正如这里提到的-如何设置sql-mode-in-my-cnf-in-mysql-8

[mysqld]
sql-mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

此外,如果有人没有my.cnf文件,那么他们可以在/etc/mysql/my.cnf中创建一个新的文件,然后添加上面的行。

This

SELECT列表中的表达式#1不在GROUP BY子句中,包含未聚合的列returntr_prod.tbl_customer_pod_uploads。id',它不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by不兼容

将通过这个命令改变MySQL中的sql模式来简单地解决,

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

这也适用于我。 我使用这个,因为在我的项目中有很多这样的查询,所以我只是将这个sql模式更改为only_full_group_by

或者简单地包括SELECT语句指定的GROUP BY子句中的所有列。sql_mode可以保持启用状态。

谢谢你!: -)

在my.ini中,这样写:

[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"

取决于你的版本。或者:

[mysqld]
sql_mode = ""

或者简单地删除这个:ONLY_FULL_GROUP_BY