Mysql 5.7 엄격 모드를 5.6의 상태로 되 돌리는 올바른 방법은 무엇입니까?


10

서버를 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을 구성하려면 어떻게해야합니까?


이 답변을보십시오 : stackoverflow.com/a/34426883/534883 이벤트 OSX 용이지만 우분투에서 저에게 효과적이었습니다.
Pit

답변:


34

엄격한 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 모드를 비활성화하는 방법


2
정답이며, 승인 된 것으로 표시되어 있어야합니다.
budhajeewa

mysql 명령을 실행하면 왜 다음을 반환 mysql: [ERROR] Found option without preceding group in config file /etc/mysql/conf.d/disable_strict_mode.cnf at line 1!합니까?
Abhishek Saini

1
@AbhishekSaini는, 한 번 봐 가지고 .
Bilal

1
이것은 답변입니다. 이것을 답변으로 참조하십시오.
Lasitha Benaragama

0

설정 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.