Error Static analysis: 1 errors were found during analysis. Missing expression. (near "ON" at position 25) SQL query: Edit Edit SET FOREIGN_KEY_CHECKS = ON; MySQL said: Documentation #2006 - MySQL server has gone away
(Korean)
이 에러는 복합적인 문제로 두가지를 동시에 확인해야합니다.
첫번째로 확인해야할 부분은 외래키 사용이 On으로 되어져있기때문에 테이블 작업시 에러가 발생하는 것입니다.
SET foreign_key_checks = 0; -- run some queries SET foreign_key_checks = 1;
당연히 Sql 시작 구문에 SET FOREIGN_KEY_CHECKS = OFF; 혹은 숫자 0을 지정하고 마지막 부분에 ON; 또는 숫자 1을 지정하면 해결됩니다.
하지만 다른 문제로 인해서 위의 문구가 발생하는 경우가 있습니다.
바로 max allowed packet 최대 허용 패킷 크기때문입니다.
제 경우에는 운영하는 서버환경설정의 max allowed packet 값이 1000K 으로 지정되어져있었습니다.
이것을 5000K 혹은 그 이상으로 잡아주게되면 쿼리문을 입력할때 문자열이 길어서 제약위반이 되는것을 방지 할 수 있습니다.
vi /etc/my.cnf max_allowed_packet=5000K
wq! 눌러서 저장하고 나간다음 MySql (MariaDB) 재시작을 하면 됩니다.
service mariadb restart service mysqld restart
이제 phpmyadmin 에서 확인해보면 max allowed packet 값이 5000K (5,120,000) 들어간것을 확인 할 수 있습니다.
그리고 다시 DB를 복원해보시면 이제는 정상적으로 해결되어 데이터가 잘 들어갈겁니다.
set foreign_key_checks = on
모두 해결되셨나요?