Mysql 5.7 엄격 모드를 5.6의 상태로 되 돌리는 올바른 방법은 무엇입니까? 16으로 업그레이드했으며 기본적으로 엄격 모드가 활성화되어 있습니다

서버를 Mysql 5.7을 포함하는 Ubuntu 16으로 업그레이드했으며 기본적으로 엄격 모드가 활성화되어 있습니다 (구성 파일에는 항목이 없지만).

mysql 5.6 이하에서 프로덕션 환경에있는 데이터베이스를 가져 오는 데 문제가 있으며 엄격 모드 때문입니다. 기본적으로 다음이 활성화되어 있습니다.

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY

5.6의 데이터베이스가 5.7과 호환되도록 5.6에서와 동일하게 작동하도록 mysql 5.7을 구성하려면 어떻게해야합니까?



답변

엄격한 SQL 모드를 사용하지 않으려면 서버에 SSH로 접속하여 root다음 파일을 작성하십시오.

/etc/mysql/conf.d/disable_strict_mode.cnf

파일을 열고 다음 두 줄을 입력하십시오.

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

이 명령으로 MySQL을 다시 시작하십시오.

sudo service mysql restart

이 변경 사항은 MySQL 5.7에 추가되어 일부 이전 응용 프로그램에 문제를 일으키는 두 가지 SQL 모드 설정 STRICT_TRANS_TABLES및을 비활성화 ONLY_FULL_GROUP_BY합니다.

엄격한 SQL 모드가 비활성화되어 있는지 확인

다음과 같이이 명령을 실행하여 엄격한 SQL 모드가 비활성화되어 있는지 확인할 수 있습니다 root.

 sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

엄격 모드가 비활성화되면 해당 명령의 출력이 표시되지 않습니다.

엄격 모드를 비활성화하면 문제가 발생하면 해당 파일을 삭제하고 MySQL을 다시 시작하여 다시 활성화 할 수 있습니다.

출처 : MySQL 5.7에서 엄격한 SQL 모드를 비활성화하는 방법


답변

설정 sql_mode/etc/mysql/mysql.conf.d/mysqld.cnf없이 STRICT_TRANS_TABLES.

아래에 추가 [mysqld]:

sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION