크기가 큰 데이터를 DB에 넣어볼 일이 그동안 없었는데 최근 이런 에러가나서 찾아봤다.
DB 테이블에 컬럼의 값이 유효해도 실제로 들어가지 않는 이유는 클라이언트와 서버의 통신 프로토콜의 최대 패킷 크기에 의해서 결정되기 때문이란다.
(Myql 4 이전 버젼은 16MB, Mysql 4 이후는 1GB가 허용된다.)
Error Code : 1153
Got a packet bigger than 'max_allowed_packet' bytes
이런 경우는 my.cnf 파일을 설정해준 후 Mysql 을 재시작!
(10MB 넘는 내용은 짤라버렸다;; 물론~ 내용을 확인할 다른 조취를 취했지~)
]$ vi /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysqld.sock
max_allowed_packet = 10M
[mysqld]
# fine tuning
max_allowed_packet = 10M
]$ /mysql/bin/mysqld_safe
테이블 컬럼타입은 LONGTEXT (최대 4GB까지 가능)
mysql> desc log;
+-------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------------------+----------------+
| log_idx | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
~
| log_text | longtext | YES | | NULL | |
| reg_date | datetime | NO | | 0000-00-00 00:00:00 | |
+-------------+---------------------+------+-----+---------------------+----------------+