2016-07-15 9 views
2

Я использую mysql версию 5.7.12 на Ubuntu 16.04. Я заметил следующее исключение при запуске моего веб-приложения:mysql 5.7.12 - Отключить only_full_group_by sql_mode не удалось полностью

SQL Exception: Expression #x из списка SELECT, не является в предложения GROUP BY и содержит неагломерированных столбец «something.something», которое не функционально зависит от столбцов в GROUP BY; это несовместимо с sql_mode = only_full_group_by

Он отлично работал на mysql 5.5. Я искал решения в Интернете. Я могу понять, почему они по умолчанию используют only_full_group_by mysql_mode в версии 5.7. Тем не менее, я не могу позволить себе на этом этапе вернуться к коду и продолжать исправлять запросы. Я решил отключить этот sql_mode, отредактировав файл /etc/mysql/my.cnf, как предложено here. Добавив следующие строки в конец my.cnf и перезапустив mysql.

[mysqld] 
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 

Чтобы убедиться, что он работает, я попробовал следующие команды в консоли тузд:

SELECT @@sql_mode; 

SELECT @@GLOBAL.sql_mode; 

SELECT @@SESSION.sql_mode; 

Все они вернулись тот же результат, как показано ниже:

+ ---- -------------------------------------------------- --------------------------------------- + | @@ GLOBAL.sql_mode | + ------------------------------------------------ --------------------------------------------- + | STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION | + ------------------------------------------------ --------------------------------------------- +

1 ряд в наборе (0,00 сек)

После запуска моего webapp я обнаружил, что он действительно работал для некоторых запросов, но для других он по-прежнему бросает то же исключение. Я не знаю, что делать. Пожалуйста, помогите мне решить эту проблему.

Благодаря

ответ

1

Пожалуйста, проверьте наличие нескольких вхождений my.cnf файл в файловой системе, которые могут быть отменяя sql_mode, указанный в приведенном выше.