max_allowed_packet mysql 변수 확인 및 설정 방법
중복 가능성 :
MySQL 오류 1153- 'max_allowed_packet'바이트보다 큰 패킷이 있습니다.
안녕하세요, 오류가 발생합니다.
[1153] Got a packet bigger than 'max_allowed_packet'bytes
그러나 소스 코드를 변경하지 않았고 호스팅 상태에서 서버 설정을 변경하지 않았습니다.
무슨 일이 있었는지 모르겠어요. 그러나 나는 그 이유를 찾으려고 노력하고있다.
그래서 max_allowed_packet
PHP 스크립트로 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로 이동하여 주 관리자 또는 최고 관리자로 로그인합니다.
SSH / Shell 액세스를 찾습니다 (cpanel의 보안 탭에서 찾을 수 있음).
이제 최고 관리자의 사용자 이름과 비밀번호를
root
또는whatyougave
note: do not give any username, cos, it needs permissions
일단 콘솔 유형으로
'
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
'code' 카테고리의 다른 글
Rails에서 파일 업로드를 어떻게 테스트합니까? (0) | 2020.08.20 |
---|---|
콘솔에서 Subversion을 사용할 때 비밀번호를 저장하는 방법 (0) | 2020.08.20 |
android edittext onchange listener (0) | 2020.08.20 |
단일 SQL 문에 대한 열 헤더 출력을 억제하려면 어떻게해야합니까? (0) | 2020.08.20 |
Kubernetes 포드가 삭제되면 다시 생성됩니다. (0) | 2020.08.20 |