2013-04-12 3 views
1

Я завершаю реализацию моего веб-сайта, но теперь у меня есть проблема, которая возникает в Интернете, что у меня нет локально.ONLY_FULL_GROUP_BY не установлен, но все еще есть Ошибка 1140

Я получаю эту ошибку:

failed: Mixing of GROUP columns (MIN(), MAX(), COUNT(), ...) with no GROUP columns is illegal if there is no GROUP BY clause 

результата SQL запроса

я искал в многих форумов в сети, большинство пользователей советуют изменить запрос, который я не могу/не хочу или они говорят, что это был, вероятно, в SQL-режиме: включены ONLY_FULL_GROUP_BY сервер

My SQL-режим является пустым на моем сервере в Интернете (я могу видеть, с запросом select @@sql_mode;) больше, чтобы быть уверенными, я поставил sql_mode='' in my.cnf.

Но проблема остается.

Это из-за моей версии mysql 5.0.44 на моем сервере онлайн и локально 5.1.32 (у меня нет этой ошибки ...)?

ответ

1

Да. Ты прав. Это происходит из-за версии MySQL.
Проверьте мой ответ here

Как проверить версию MySQL?

mysql> SELECT version(); 
+-----------+ 
| version() | 
+-----------+ 
| 5.5.28 | 
+-----------+ 
1 row in set (0.00 sec)  

Для тестирования sql_mode ONLY_FULL_GROUP_BY, я создал таблицу patient с двумя столбцами id, name и вставленных записей. Помните, что sql_mode ONLY_FULL_GROUP_BY не установлен по умолчанию, вам нужно установить, если хотите.

1) MySQL версии 5.0.45 -сообщества нт

SELECT name, MAX(id) FROM patient; 
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 

Он потерпел неудачу, не было никакого смысла в установлении sql_mode в ONLY_FULL_GROUP_BY, как это не позволит неагломерированных столбцы, которые не названы в предложение GROUP BY.

2) MySQL версии 5.1.40 -сообщество

mysql> SELECT name, MAX(id) from patient; 
+----------+--------+ 
| MAX(id) | name | 
+----------+--------+ 
|  33 | aniket | 
+----------+--------+ 
1 row in set (0.03 sec) 

Затем после установки sql_mode ONLY_FULL_GROUP_BY

mysql> set sql_mode = 'ONLY_FULL_GROUP_BY'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT name, MAX(id) from patient; 
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 

3) MySQL версии 5.5.28

mysql> SELECT name, MAX(id) from patient; 
+----------+--------+ 
| MAX(id) | name | 
+----------+--------+ 
|  33 | aniket | 
+----------+--------+ 
1 row in set (0.03 sec) 

Затем после установки sql_mode ONLY_FULL_GROUP_BY

mysql> set sql_mode = 'ONLY_FULL_GROUP_BY'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT name, MAX(id) from patient; 
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause 

Заключение

Как вы можете увидеть запрос потерпел неудачу на версии 5.0.45, и добиться успеха на/после 5.1.40, 5.5.28 и 5.1.32 (как вы упомянули в вопросе). До версии MySQL 5.1.10(not sure) запрос без GROUP BY не работает независимо от sql_mode ONLY_FULL_GROUP_BY установлен или нет.

Некоторые интересные ошибки и sql_mode чаво ссылка

  1. ONLY_FULL_GROUP_BY sql mode is overly restrictive
  2. sql-mode: only full group by mode not working
  3. MySQL 5.0 FAQ: Server SQL Mode

 Смежные вопросы

  • Нет связанных вопросов^_^