MySQL

mysql max_allowed_packet 에러

猫猫 2019. 9. 3. 09:57
반응형

전송패킷보다 큰 데이터를 전송하려하면 에러가 난다. 

 

use sqldb;
create table maxtbl( col1 longtext, col2 longtext);
insert into maxtbl values(repeat('a',1000000), repeat('가',1000000));
select length(col1), length(col2) from maxtbl; -- 한글은 2byte 사용하니까 영어의 2배
insert into maxtbl values(repeat('A',10000000), repeat('가',10000000)); -- 용량때문에 에러 my.ini건드려줘야함
select length(col1), length(col2) from maxtbl;

위의 insert는 실행이 되지만

아래의 insert는 max_allowed 에러를 띄운다. 

전송패킷이 1M 인가? 로 설정되어있음

 

학원에선 my.ini를 건드리라 하셨는데.. 이거 잘못건드렸다 지금 30명중 29명이 워크벤치 실행이 안된다 ㄷㄷ

 

차라리 워크벤치-> server->options file->Networking-> max_allowed_packet을 건드리는것이.. 안전..

밑에 보면 설치 폴더의 my.ini 파일을 건드린다 되어있다. 

 

나같이 c:가 아니라 d:에 설치했으면 d:의 my.ini를 건드리셨어야 ㅎ... 그것도 모르고  C에서 으마무시하게 저장하고

외않되 시전중.. 

 

max_allowed_packet은 mysqld, mysql, client 세 개 모두 건드려야 하기 때문에 아래 쪽에 있는 드롭박스로 세개 모두 선택해서 모두 최대값인 1000M로 바꿔주자

 

 

다시 server의 startup/shutdown에 들어가서 셧다운 함 하고 스타트 해주면 정상 적용 된다. 

 

근데 이건 어디까지나 gui 환경에서 가능한 것이고.. 

터미널로 하려면 설치폴더->my.ini를 건드려야 한다는 점.

그리고 my.ini 잘못건드리면 큰일나니까 my.ini는 백업을 꼭 하고 해야 한다는 점. 

 

참고 : https://stackoverflow.com/questions/8062496/how-to-change-max-allowed-packet-size

반응형