2019-08-05
Got a packet bigger than 'max_allowed_packet' bytes 라는 에러가 떴다.
에러 내용만 보면, packet이 max_allowed_packet값보다 크다는 내용이다.
그리고 에러가 뜬 쿼리에는 파일이 하나 포함되어 있어서 쿼리 용량이 매우 컸었다.
그래서 해당 값이 얼마인지 쳐보니, 아래처럼 1Mbyte로 되어 있었다.
MariaDB [(none)]> show GLOBAL VARIABLES like 'max_allowed_packet'; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+ 1 row in set (0.001 sec)
해당 값은 "SET GLOBAL max_allowed_packet = ..." 식으로도 바뀌지만, 영구적인 설정을 위해선, my.ini파일에서 max_allowed_packet = 10M 식으로 추가를 해야 한다.
[mysqld] max_allowed_packet = 10M
위 값을 바꾸고 mysql서비스를 껐다 켜고, 다시 show VARIABLES를 해보면, 아래처럼 설정이 바뀌었을 것이다.
MariaDB [(none)]> show GLOBAL VARIABLES like 'max_allowed_packet'; +--------------------+----------+ | Variable_name | Value | +--------------------+----------+ | max_allowed_packet | 10485760 | +--------------------+----------+ 1 row in set (0.001 sec)

자 이제 다 됐겠지? 하고.. 다시 프로그램으로 돌아와 해당 부분을 실행시켰더니..
이번엔, The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size. 이라는 에러가 떴다.
해당 에러는 innodb_log_file_size값이 너무 작아서 뜨는 오류 이다.
마찬가지로 my.ini파일에 가서 해당 값을 넉넉하게 바꿔주고, 서비스를 껏다 켠다.
[mysqld] max_allowed_packet = 10M innodb_log_file_size = 100M
이제 확인을 해보면 바뀐걸 알 수 있다.
MariaDB [(none)]> show GLOBAL VARIABLES like 'innodb_log_file_size'; +----------------------+-----------+ | Variable_name | Value | +----------------------+-----------+ | innodb_log_file_size | 104857600 | +----------------------+-----------+ 1 row in set (0.001 sec)
이렇게 하면 모든 packet용량이 커서 발생하는 오류는 해결된다.