code

max_allowed_packet mysql 변수 확인 및 설정 방법

codestyles 2020. 8. 20. 18:48
반응형

max_allowed_packet mysql 변수 확인 및 설정 방법


중복 가능성 :
MySQL 오류 1153- 'max_allowed_packet'바이트보다 큰 패킷이 있습니다.

안녕하세요, 오류가 발생합니다.

[1153] Got a packet bigger than 'max_allowed_packet'bytes

그러나 소스 코드를 변경하지 않았고 호스팅 상태에서 서버 설정을 변경하지 않았습니다.

무슨 일이 있었는지 모르겠어요. 그러나 나는 그 이유를 찾으려고 노력하고있다.

그래서 max_allowed_packetPHP 스크립트로 mysql 변수 를 확인하는 방법은 무엇입니까?

소스 코드에서 설정할 수 있습니까?


max_allowed_packet PHP 측이 아닌 mysql 구성에 설정되어 있습니다.

[mysqld]
max_allowed_packet=16M 

다음과 같이 mysql에서 현재 값을 볼 수 있습니다.

SHOW VARIABLES LIKE 'max_allowed_packet';

다음과 같이 변경할 수 있지만 공유 호스팅에서는 작동하지 않을 것입니다.

SET GLOBAL max_allowed_packet=16777216;

여기 http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html에서 읽을 수 있습니다.

편집하다

[mysqld]는 max_allowed_packet최소한 mysql 버전 5.5부터 작동 하도록하는 데 필요합니다 .

최근에 Drupal 및 Solr Search Engine을 사용하여 AWS EC2에 인스턴스를 설정했는데 32M max_allowed_packet. [mysqld_safe]/etc/my.cnf에서 (mysql 설치와 함께 제공되는 기본 설정) 모드에서 값을 설정했지만 작동하지 않았습니다. 나는 문제를 파헤 치지 않았다. 그러나 [mysqld]mysqld로 변경 하고 다시 시작한 후에 는 작동했습니다.


다음 PHP가 나를 위해 일했습니다 (mysqli 확장을 사용하지만 다른 확장에 대한 쿼리는 동일해야 함).

$db = new mysqli( 'localhost', 'user', 'pass', 'dbname' );
// to get the max_allowed_packet
$maxp = $db->query( 'SELECT @@global.max_allowed_packet' )->fetch_array();
echo $maxp[ 0 ];
// to set the max_allowed_packet to 500MB
$db->query( 'SET @@global.max_allowed_packet = ' . 500 * 1024 * 1024 );

따라서 매우 길 것으로 예상되는 쿼리가있는 경우 mysql이 다음과 같이이를 수락하도록 할 수 있습니다.

$sql = "some really long sql query...";
$db->query( 'SET @@global.max_allowed_packet = ' . strlen( $sql ) + 1024 );
$db->query( $sql );

나는 때문에 문자열의 길이에 추가 1024 바이트에 추가 한 사항 에 따라 수동으로 ,

값은 1024의 배수 여야합니다. 비 배수는 가장 가까운 배수로 내림됩니다.

쿼리를 처리하기에 충분히 큰 max_allowed_packet 크기를 설정해야합니다. 공유 호스트에서 이것을 시도하지 않았으므로 @Glebushka와 동일한 경고가 적용됩니다.


cpanel로 이동하여 주 관리자 또는 최고 관리자로 로그인합니다.

  1. SSH / Shell 액세스를 찾습니다 (cpanel의 보안 탭에서 찾을 수 있음).

  2. 이제 최고 관리자의 사용자 이름과 비밀번호를 root또는whatyougave

    note: do not give any username, cos, it needs permissions
    
  3. 일단 콘솔 유형으로

    ' mysql'를 입력하고 Enter 키를 누르십시오.

    mysql> / * 여기에 * /와 같이 입력하십시오.

    mysql> set global net_buffer_length=1000000;

    쿼리 OK, 영향을받는 행 0 개 (0.00 초)

    mysql> set global max_allowed_packet=1000000000;

    쿼리 OK, 영향을받는 행 0 개 (0.00 초)

이제 업로드하고 즐기십시오 !!!

참고 URL : https://stackoverflow.com/questions/5688403/how-to-check-and-set-max-allowed-packet-mysql-variable

반응형