큰 덤프 파일을 가져 오려고 할 때“MySQL 서버가 사라졌습니다” -u username -d dbase

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 스위치와 관련이 있다고 제안했지만 이것을 시도했지만 작동하지 않았습니다. 누구든지 이것이 무엇인지 알 수 있습니까?

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



답변

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

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

[mysqld]
max_allowed_packet=32M

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

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

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

자세한 내용은 B.1.2.10을 참조하십시오 . MySQL 매뉴얼에서 패킷이 너무 큽니다 .


답변

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에 있습니다.


답변

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

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

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

캐릭터 설정 문제를 해결할 수있는 가져 오기를 수행 할 원래 상자에 리눅스 클라이언트를 사용하고 있기 때문에. (그냥 추측)


답변

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

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


답변

계정에 비밀번호가 있습니까? -p 스위치를 추가해야 할 수도 있습니다.

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