it-swarm-ko.tech

큰 덤프 파일을 가져 오려고 할 때 "MySQL 서버가 사라졌습니다"

MySQL 덤프 파일을 가져 오려고합니다.

파일이 Linux 서버에서 작성되었으며 Windows에서 가져 오려고합니다.

커맨드 라인에 로그인하여 실행했습니다.

SOURCE c:/dump.sql

그러나 이것은 일부 문자 세트 문제 (특히 스마트 인용 부호 및 기타 비표준 구두점)를 발생시키는 것으로 보입니다.

내가 달리는 것이 나에게 제안되었다.

mysql -u username -d dbase < c:\dump.sql

이것을 시도하면 오류가 발생합니다.

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

약간의 인터넷 검색은 이것이 max_allowed_packet 스위치와 관련이 있다고 제안했지만 이것을 시도했지만 작동하지 않았습니다. 누구든지 이것이 무엇인지 알 수 있습니까?

누구나 문자 세트 문제에 대한 제안이 있으면 도움이 될 것입니다.

11
Jeremy French

질문 제목에서 오류 메시지를 읽은 후 처음 본능은 max_allowed_packet을 늘리는 것입니다. 당신은 "그 스위치"를 시도했지만 작동하지 않았다고 언급했습니다. 서버의 구성 파일을 올바르게 수정했는지 확인할 수 있습니까? 문구는 mysql.exe 클라이언트 명령 행에서 명령 행 스위치로 사용하려고 시도한 것처럼 들리므로 서버가 동작을 변경하지 않습니다.

간단히 말해, 서버에서 현재 사용중인 my.cnf 파일을 찾아서 편집해야합니다. [mysqld] 섹션 max_allowed_packet 설정을 다음과 같이 변경하십시오.

[mysqld]
max_allowed_packet=32M

구성을 변경 한 후 서버를 다시 시작하는 것을 잊지 마십시오.

나는 32M (엄청나게 큰 값)을 예로 사용했습니다. 쿼리가 큰 것처럼 보이므로이 값 (또는 RAM이 충분한 경우 64M)을 사용하여 작동하는지 확인해야합니다.

다른 옵션은 서버를있는 그대로두고 SQL 덤프를 생성하는 데 사용되는 클라이언트의 동작을 변경하는 것입니다. 개별 쿼리의 크기를 1MB 미만으로 제한하도록 지시하십시오.

자세한 내용은 MySQL 매뉴얼의 B.1.2.10. 패킷이 너무 큼 을 참조하십시오.

23
Mihai Limbăşan

MySQL 5.7.24에서는 MySQL 5.6의 이전 구성으로 인한 것입니다.

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

SQL 버전이 5.7.5 이상인 경우 아래 옵션이 필수입니다.

sql_mode=TRADITIONAL

또한 / etc/my.cnf에 max_allowed_packet 매개 변수가 두 개 있습니다, 다른 하나는 mysqldump 용입니다. 같은 점에 유의하십시오.

max_allowed_packet = <1G>

설치는 CentOS7에 있습니다.

1
Krishna Pandey

MySQL 로그는 무엇을 말합니까?

서버에 수정할 수없는 오류가있는 경우 때때로이 오류가 클라이언트에보고됩니다. 데이터베이스 테이블의 디스크 손상을 나타내는 지표 일 수 있습니다.

0
Dave Cheney

리눅스 박스에서 Windows 서버의 MySQL 인스턴스에 액세스 할 수 있습니까?

그렇다면 리눅스 상자에서 -h 스위치 명령을 실행하여 Windows 상자의 서버에 연결할 수 있습니까?

mysql -u username -d dbase -h <windows Host> < dump.sql

원래 상자에서 Linux 클라이언트를 사용하여 가져 오기를 수행하므로 문자 집합 문제를 해결할 수 있습니다 (그냥 추측)

0
Brent