서버를 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