MySQL 오류 1153- 'max_allowed_packet'바이트보다 큰 패킷이 있습니다


430

MySQL 덤프를 가져오고 다음 오류가 발생합니다.

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

분명히 데이터베이스에 첨부 파일이있어 매우 큰 삽입이 가능합니다.


이것은 내 로컬 컴퓨터, MySQL 패키지에서 MySQL 5가 설치된 Mac에 있습니다.

max_allowed_packet덤프를 가져올 수 있도록 어디서 변경 합니까?

설정해야 할 것이 있습니까?

방금 실행 mysql --max_allowed_packet=32M …하면 같은 오류가 발생했습니다.



@Muleskinner,이 질문은 당신이 언급 한 3 년 전에 게시되었으며 귀하의 의견 후 4 년 동안 지적하고 있습니다. : p
tiomno

2
Webyog.com 링크가 끊어졌습니다 : 404
Pathros

여기 JetBrains의에 의해 DataGrip 2016.1를 사용하여 MySQL 데이터베이스에 연결하고, 정류 때 해결 왔을 때, 유사한 오류, "쿼리 패킷이 (> 1,048,576 5,526,600) 대형이다."잘못된 암호 입력에 의해 발생되었다 (오른쪽 비밀번호를 사용하여 MySQL 데이터베이스 사용자에 해당).
nyedidikeke

답변:


589

클라이언트 (가져 오기를 수행하기 위해 실행 중)와 가져 오기를 실행하고 승인하는 데몬 mysqld 둘 다에 대해 변경해야 할 수도 있습니다.

클라이언트의 경우 명령 행에서 지정할 수 있습니다.

mysql --max_allowed_packet=100M -u root -p database < dump.sql

또한 mysqld 섹션 에서 my.cnf 또는 my.ini 파일을 변경 하고 다음을 설정하십시오.

max_allowed_packet=100M

또는 동일한 서버에 연결된 MySQL 콘솔에서 다음 명령 을 실행할 수 있습니다 .

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(패킷 크기에는 매우 큰 값을 사용하십시오.)


RAM이 16GB 인 서버가 있는데 max_allowed_packet100MB 로 설정하는 것이 좋지 않습니까?
웹넷

11
참고-그것은 다른 오류를 해결하는 데 도움이되었습니다- "# 2006 서버가 사라졌습니다"
itsho

37
다음 mysql 서비스가 다시 시작될 때까지 "set global"을 사용하십시오.
윌 면도기

2
"전역 설정"과 마지막 ";"을 건너 뜁니다. 이 값을 my.ini 또는 my.cnf 파일에 추가 할 때 예 : my.conf의 "net_buffer_length = 1000000"
Rustavore

3
CentOS는 5 일, my.cnf 파일은 /etc/my.cnf에에 위치
Rustavore

124

michaelpryor가 말했듯 이 클라이언트 데몬 mysqld 서버 모두 에 대해 변경해야 합니다.

클라이언트 명령 행에 대한 그의 솔루션은 좋지만 구성에 따라 ini 파일이 항상 트릭을 수행하지는 않습니다.

따라서 터미널을 열고 mysql을 입력하여 mysql 프롬프트를 표시 한 후 다음 명령을 실행하십시오.

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

mysql 프롬프트를 열어두고 두 번째 터미널에서 명령 행 SQL 실행을 실행하십시오.


2
나를 위해 문제를 해결했다. 내가하고있는 가져 오기는 일회성이며 구성을 쉽게 변경할 수 없습니다. 이것은 훌륭하게 작동했습니다. : D
Rob Howard

39

my.ini서버 섹션 아래의 파일 (Windows의 경우 \ Program Files \ MySQL \ MySQL Server에 있음) 에서 다음과 같이 변경할 수 있습니다 .

[mysqld]

max_allowed_packet = 10M

5
Mac의 경우 다른 곳에있는 파일입니다.
kch

2
하지만 정확한 위치를 모르더라도 구성은 여전히 ​​어딘가에 있습니다.
GHad

Fedora 20에서 MariaDB를 사용하는 경우 /etc/my.cnf.d/server.cnf 끝에 설정을 배치하면 트릭을 수행했습니다. 물론 서비스를 다시 시작해야했다 ... sudo nano systemctl restart mariadb.service
Ray Foss

파일은 "my.cnf"및 nix 시스템 (일반적으로 / etc / 또는 / usr / local / etc) 일 가능성이 큽니다. 편집 한 후에는 변경 사항을 적용하기 위해 mysql 서버를 다시 시작하십시오.
Chris

17

mysql.com dmg 패키지 배포에서 MySQL을 사용할 때 Mac OS X에서 my.cnf 다시

기본적으로 my.cnf는 어디에도 없습니다.

당신이 중 하나를 복사 할 필요 /usr/local/mysql/support-files/my*.cnf/etc/my.cnf하고 다시 시작 mysqld. (MySQL 환경 설정 창에서 설치 한 경우 수행 할 수 있습니다.)


OSX 장소의 기본 설정은의 max_allowed_packet 크기가 내-large.cnf에서 동일하지만, 당신이 :) 일을 변경 시작할 때까지 ..., 내-medium.cnf 것으로 보인다
크리스 버지스

제 경우에는 /usrl/local/mysql/my.cnf가 /etc/my.cnf에 복사 될 때까지 작동하지 않았습니다.
VG

14

etc / my.cnf에서 max_allowed _packet 및 net_buffer_length를 다음으로 변경하십시오.

max_allowed_packet=100000000
net_buffer_length=1000000 

이것이 작동하지 않으면 다음으로 변경하십시오.

max_allowed_packet=100M
net_buffer_length=100K 

12

수정 사항은 MySQL 데몬의 max_allowed_packet을 늘리는 것입니다. Super로 로그인하고 다음 명령을 실행하여 실행중인 데몬에이를 수행 할 수 있습니다.

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

그런 다음 덤프를 가져 오십시오.

gunzip < dump.sql.gz | mysql -u admin -p database

어떤 버전의 MySQL을 실행 했습니까?
crmpicco

6

CENTOS 6 /etc/my.cnf의 [mysqld] 섹션에서 올바른 구문은 다음과 같습니다.

[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000 
max_allowed_packet=1000000000
#

4

다음 max_allowed_packet과 같은 명령을 실행 하는 변수를 사용하십시오.

mysql --max_allowed_packet=32M -u root -p database < dump.sql


2
시도했지만 작동하지 않았습니다. 272mb의 전체 덤프는 최대보다 높은 값으로 시도했습니다.
kch

4

귀하의 문제와 약간 관련이 없으므로 여기에 Google 용 문제가 있습니다.

SQL을 mysqldump하지 않은 경우 SQL이 손상되었을 수 있습니다.

실수로 코드에 닫히지 않은 문자열 리터럴이 있어서이 오류가 발생했습니다. 거친 손가락이 발생합니다.

MySQL 덕분에 런 어웨이 문자열을 얻는 환상적인 오류 메시지입니다!


1
또한 깨진 SQL로 인해이 오류가 발생했습니다. 더 구체적으로, 내 테이블에는 null 제약 조건이 있고 코드는 null 값을 삽입했습니다. 나에게 유익한 오류를주는 대신 MySQL은 max_allowed_packet오류를 반환했습니다 . 그것이 미래에 도움이된다면, 나는 판다 API를 사용하여 삽입했습니다df.to_sql(...)
Alex Petralia

1

때로는 유형 설정 :

max_allowed_packet = 16M

my.ini에서 작동하지 않습니다.

다음과 같이 my.ini를 확인하십시오.

set-variable = max_allowed_packet = 32M

또는

set-variable = max_allowed_packet = 1000000000

그런 다음 서버를 다시 시작하십시오.

/etc/init.d/mysql restart

1

max_allowed_packet공격자가 더 큰 크기의 패킷을 푸시하고 시스템을 중단시킬 수 있으므로 높은 가치 를 갖는 것은 보안 상 위험 합니다.

따라서 최적 값은 max_allowed_packet조정 및 테스트됩니다.

my.ini 또는 my.conf의 일부로 사용하는set global max_allowed_packet = xxx 것보다 필요할 때 (사용하여 ) 변경하는 것이 좋습니다 .


0

공유 호스팅 환경에서 작업하고 있으며 Drupal을 기반으로하는 웹 사이트를 호스팅했습니다. my.ini파일이나 my.conf파일도 편집 할 수 없습니다 .

따라서 관련된 모든 테이블을 삭제 Cache했으므로이 문제를 해결할 수 있습니다. 여전히이 문제를 해결하는 완벽한 솔루션 / 방법을 찾고 있습니다.

편집 -테이블을 삭제하면 문제가 생겼습니다. coz Drupal은 이러한 테이블이 존재하기를 기대했습니다. 그래서이 테이블의 내용을 비워 문제를 해결했습니다.


0

오류:

6772 행의 오류 1153 (08S01) : 'max_allowed_packet'바이트보다 큰 패킷이 발생했습니다. 종료 코드 1에서 작업이 실패했습니다.

질문:

SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet'; 

최대 값 :

Default Value (MySQL >= 8.0.3)  67108864
Default Value (MySQL <= 8.0.2)  4194304
Minimum Value   1024
Maximum Value   1073741824

-1

max_allowed_packet을 mysqldump로 덤프했을 때와 동일하게 설정하십시오. 그렇게 할 수 없으면 더 작은 값으로 덤프를 다시 만드십시오.

즉, mysqldump로 덤프했다고 가정합니다. 다른 도구를 사용했다면 스스로해야합니다.

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