mysql5.7에서 "SELECT list is not in GROUP BY clause"오류가 발생했습니다.
환경
$ mysql -V
mysql Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using EditLine wrapper
대응
mysql 5.6 -> 5.7로 했을 때에 sql_mode의 초기 설정이 변경되고 있었던 것이 원인이었습니다.
local에는 homebrew로 mysql을 설치하고 있었으므로, my.cnf의 변경과 재기동으로 대응합니다.
mysql의 SQL 모드 확인
SELECT @@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
여러 가지가 있습니다 ...
(mysql5.7부터 7개의 SQL 모드가 초기 설정되어 있다고 합니다)
my.cnf의 SQL 모드 변경
my.cnf의 위치를 확인합니다.
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
SQL 모드는 우선 비어있을 때입니다.
(이번 오류의 원인
ONLY_FULL_GROUP_BY
을 제거하는 것만으로도 좋습니다)/usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
+ sql_mode = ""
mysql 서버 재부팅
$ mysql.server restart
Done.
참고
Reference
이 문제에 관하여(mysql5.7에서 "SELECT list is not in GROUP BY clause"오류가 발생했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/paranishian/items/c1eaee5419e7bdb05198텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)