sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1055, "Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by")
AWS ec2 서버에서 Flask 구동하기 글에서 해결했던 에러가 다시 생겼다.
일주일정도 서버를 구동했는데 db 설정이 초기화가 된건지 group by query시에 문제가 생겨 서버 동작이 안한다 ^^
mysql 에서 query로 설정하는 건 영구적으로 설정되는 것이 아니라고 한다 !!
그래서 아예 etc/my.cnf
안에서 설정을 해보았다.
etc는 linux의 home 디렉터리에서 한 번 더 나가면 있다.
mysql 설정 파일은 버전이나 설치되는 방법에 따라 좀 다른거 같은데 나는 sudo vi etc/my.cnf
로 수정할 수 있다.
다른 글에서는 sudo vim /etc/mysql/conf.d/mysql.cnf
로 수정한다니 참고하자. vim이 안 먹힐 수도 있으니 vi로도 열어보자 !
그런 다음
[mysqld] 밑에 이렇게 붙여넣는다.
[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
그런 다음 :wq 로 저장한다. 이 명령어가 안먹히면 :wq! 로 강제로 저장하면 된다.
그리고 mysql service를 재시작한다.
sudo systemctl restart mysqld
sudo systemctl status mysqld
로 mysql이 실행되었는 지 확인한다.
총 과정
cd etc
sudo vi my.cnf
#Write
[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
#Save
:wq
#Restart mysql
sudo systemctl restart mysqld
sudo systemctl status mysqld