[mysql] SQL 덤프에서 데이터베이스를 복원하는 동안 바이너리 모드 활성화

저는 MySQL을 처음 접했고 Windows에서 실행하고 있습니다. MySQL의 덤프 파일에서 데이터베이스를 복원하려고하는데 다음 오류가 발생합니다.

$ >mysql -u root -p -h localhost -D database -o < dump.sql
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: 'SQLite format 3'.

--binary-modeini 파일 을 넣으려고 시도 했지만 여전히 동일한 오류가 발생합니다. 어떻게해야합니까? 도와주세요.

최신 정보

Nick이 그의 의견에서 제안한 것처럼 시도 $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql했지만 다음과 같은 결과를 얻었습니다 ERROR at line 1: Unknown command '\☻'.
. 500 Mb 덤프 파일이며 gVIM을 사용하여 내용을 보면 이해할 수없는 표현과 데이터 만 볼 수 있습니다.



답변

파일의 압축을 푼 다음 다시 가져옵니다.


답변

덤프 파일을 복원하는 Windows에서 동일한 문제가 발생합니다. 내 덤프 파일은 다음과 같이 Windows powershell 및 mysqldump로 생성되었습니다.

mysqldump db > dump.sql

문제는 powershell의 기본 인코딩이 UTF16으로 인해 발생합니다. 더 자세히 살펴보기 위해 GNU의 “파일”유틸리티를 사용할 수 있으며 여기에 Windows 버전이 있습니다 .
내 덤프 파일의 출력은 다음과 같습니다.

CRLF 줄 종결자가있는 매우 긴 줄이있는 Little-endian UTF-16 유니 코드 텍스트입니다.

그런 다음 코딩 시스템의 변환이 필요하며이를 수행 할 수있는 다양한 소프트웨어가 있습니다. 예를 들어 emacs에서

M-x set-buffer-file-coding-system

그런 다음 utf-8과 같은 필요한 코딩 시스템을 입력하십시오.

그리고 앞으로 더 나은 mysqldump 결과를 얻으려면 다음을 사용하십시오.

mysqldump <dbname> -r <filename>

출력은 mysqldump자체적 으로 처리 되지만 powershell의 리디렉션이 아닙니다.

참조 : /dba/44721/error-while-restoring-a-database-from-an-sql-dump


답변

Windows 컴퓨터에서 이전 단계를 따르십시오.

  1. 메모장에서 파일을 엽니 다.
  2. 다른 이름으로 저장을 클릭하십시오.
  3. 인코딩 유형 UTF-8을 선택합니다.

이제 db를 소싱하십시오.


답변

Tar 아카이브 도구를 사용하여 파일을 추출하십시오. 다음과 같이 사용할 수 있습니다.

tar xf example.sql.gz


답변

Notepad ++ (또는 다른 편집기)에서 열고 UTF-8로 변환 / 저장해 보셨습니까?

참조 : 메모장 ++ ansi 인코딩 파일을 utf-8로 변환

또 다른 옵션은 textwrangle을 사용하여 파일을 UTF-8로 열고 저장하는 것입니다. http://www.barebones.com/products/textwrangler/


답변

다음 mysqldump과 같이 Windows PowerShell에서 실행 한 후이 오류가 한 번 발생했습니다 .

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

내가 한 일은 이것을 다음과 같이 변경하는 것입니다 (Set-Content 대신 파이프).

mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF | Set-Content db_objects.sql

그리고 문제는 사라졌습니다!


답변

dump.sql에 파일 시작 부분에 가비지 문자가 있거나 시작 부분에 빈 줄이있을 수 있습니다.