[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-mode
ini 파일 을 넣으려고 시도 했지만 여전히 동일한 오류가 발생합니다. 어떻게해야합니까? 도와주세요.
최신 정보
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 컴퓨터에서 이전 단계를 따르십시오.
- 메모장에서 파일을 엽니 다.
- 다른 이름으로 저장을 클릭하십시오.
- 인코딩 유형 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에 파일 시작 부분에 가비지 문자가 있거나 시작 부분에 빈 줄이있을 수 있습니다.