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


11

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

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


아무 피드백? [댓글 15 개 필요]
Mihai Limbăşan

답변:


23

질문 제목에서 오류 메시지를 읽은 후 첫 번째 본능은 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 매뉴얼에서 패킷이 너무 큽니다 .


1
예, 명령 행 스위치를 시도하고있었습니다. 내가 효과가 있다고 생각한 이유는 더 작은 것으로 설정할 때 최대 허용 패킷에 너무 작은 오류가 발생했기 때문입니다. 나는 월요일에 당신의 제안을 시도 할 것입니다. 감사합니다
Jeremy French

당신은 환영합니다-나는 이것이 효과가있을 것이라고 거의 확신합니다. 불행히도 지난 50여 년 동안 작성된 많은 (좋아, 대부분의) 다른 소프트웨어와 마찬가지로 MySQL의 오류 메시지는 개발자의 마음이 작동하는 방식에 익숙하지 않으면 짜증나고 오도하는 경향이 있습니다. :).
Mihai Limbăşan 15:56에

다행 이네요-재미있게 보내세요.
Mihai Limbăşan 2016 년

매우 굉장합니다. 나는이 같은 문제가 있었고, 질문과 bam을하기 위해 여기에왔다! 해결되었습니다. @Mihai-당신이 얻는 무엇이든; 충분하지 않습니다 :)
Steven Evers

이 솔루션은 MySQL을 localhost에서 원격 서버로 옮긴 후이 오류가 발생했을 때 도움이되었습니다. 대단히 감사합니다!
Lea Cohen

1

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


0

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

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

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

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


0

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

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


-1

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

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

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