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 파일에는 동일한 오류가 표시됩니다.떻게게 해???발발도도도도도도
갱신하다
닉이 댓글에서 제시한 것처럼 저는 시도했습니다.$ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
과 같은 것을 .ERROR at line 1: Unknown command '\☻'.
파일입니다을 사용하여 그 수 되지 않습니다.500 Mb는 gVIM의 gVIM입니다.
파일의 압축을 푼 후 다시 가져옵니다.
덤프 파일을 복원하는 윈도에서도 같은 문제가 발생합니다.덤프 파일은 다음과 같이 Windows powershell과 mysqldump를 사용하여 생성되었습니다.
mysqldump db > dump.sql
이 문제는 powershell의 디폴트 부호화가 UTF16이기 때문에 발생합니다.이를 자세히 알아보려면 GNU의 "file" 유틸리티를 사용할 수 있으며 여기에는 Windows 버전이 있습니다.
덤프 파일의 출력은 다음과 같습니다.
CRLF 회선 터미네이터가 있는 매우 긴 행의 리틀엔디안 UTF-16 유니코드 텍스트.
그리고 코딩 시스템의 변환이 필요하며 다양한 소프트웨어가 이를 수행할 수 있습니다.emacs에서는 "emacs"라고 합니다.
M-x set-buffer-file-coding-system
utf-8과 합니다.
결과를과 같이
mysqldump <dbname> -r <filename>
은 '먹다'로 됩니다.mysqldump
powershell의 리다이렉트(리다이렉션)는 하지 .
레퍼런스: https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump
Windows 머신의 경우는, 상기의 순서에 따라 주세요.
- 메모장에서 파일을 엽니다.
- [이름 지어 저장]을 클릭합니다.
- Encoding type UTF-8을 선택합니다.
이제 db를 소스합니다.
공간이 부족하거나 압축 해제에 시간을 낭비하지 않으려면 이 명령을 사용하십시오.
gunzip < compressed-sqlfile.gz | mysql -u root -p
compressed-sqlfile.gz를 파일명으로 바꾸는 것을 잊지 마십시오.
.gz restore는 위에서 설명한 명령어가 없으면 동작하지 않습니다.
i행후 i i i i i i i i i i i i를 실행한 에 한 번 .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
그리고 문제는 사라졌어요!
Tar 아카이브 툴을 사용하여 파일을 추출합니다.다음과 같이 사용할 수 있습니다.
tar xf example.sql.gz
메모장++(또는 다른 에디터)로 열고 UTF-8로 변환/저장해 보셨습니까?
참조: 메모장++ ansi 부호화 파일을 utf-8로 변환
다른 옵션은 텍스트 앵글을 사용하여 파일을 열고 UTF-8로 저장하는 것입니다.http://www.barebones.com/products/textwrangler/
dump.sql의 파일 선두에 가비지 문자가 있거나 선두에 공백 행이 있을 수 있습니다.
dump.sql 문제를 파일화해야 합니다.Sequel Pro를 사용하여 파일 인코딩을 확인합니다.dump.sql에는 가비지 문자가 포함되어 있어야 합니다.
저도 같은 문제가 있었는데 덤프 파일이 실제로는 MySQL이 아닌 MSSQL Server 백업임을 알게 되었습니다.
레거시 백업 파일에 문제가 있을 수 있습니다.덤프 파일을 확인합니다.
터미널 창:
~$ cat mybackup.dmp
결과는 다음과 같습니다.
TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...
cat 명령어 처리를 중지하려면:
CTRL + C
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
Linux에서 gunzip을 사용하여 파일을 압축 해제합니다. 압축 해제 SQL 파일을 편집하려면
vi unzipsqlfile 입니다.sql
esc dd의 첫 번째 바이너리 행을 삭제하고 esc shift g를 사용하여 파일의 맨 아래로 이동합니다.마지막 바이너리 행은 dd save the file esc x:를 사용하여 다시 Import합니다.
mysql - u username -p new_sysqlfile <unzipsqlfile.sql
Jetbackup cpanel mysql 백업에서 20go sql 파일로 수행했습니다.대용량 파일을 위해 작업을 수행하는 동안 잠시 기다려 주십시오.
가져오려는 파일이 zip 파일입니다.파일의 압축을 푼 후 다시 가져오십시오.
파일은 .sql 확장자만 사용해야 합니다. (.zip, .gz.rar) 등은 지원하지 않습니다.예: dump.sql
이를 통해 오류를 수정할 수 있습니다.
zcat {address_sql_database(.tar.gz)} | mysql -u root -p {database_name} --binary-mode
포스터의 원래 질문이 해결된 것은 알고 있습니다만, 구글을 경유하여 방문했습니다.다양한 답변으로 인해 SQL에 Import에 사용한 것과 다른 기본 문자가 덤프되어 있는 것을 알게 되었습니다.처음 질문한 것과 같은 에러가 발생했지만, 덤프가 다른 MySQL 클라이언트에 파이프로 연결되어 있기 때문에 다른 툴로 오픈하여 다른 방법으로 저장할 수 없었습니다.
우리에게 있어서 해결책은--default-character-set=utf8mb4
", " 의 됩니다.mysqldump
Import를 도 있습니다.mysql
물론 파라미터의 값은 같은 문제에 직면한 다른 사람에 따라 다를 수 있습니다.서버(또는 툴)의 디폴트 설정은 임의의 문자 집합일 수 있으므로 파라미터 값을 동일하게 유지하는 것이 중요합니다.
낡았지만 금이야!
MacOS(Catalina 10.15.7)에서는 조금 이상했습니다.이름을 바꿔야 했어요dump.sql
안으로dump.zip
그 후엔 단말기에서 파인더(!)를 사용해서 압축을 풀어야 했어요unzip dump.zip
오데르 강tar xfz dump.sql[or .gz .tar ...]
에러 메시지로 이어집니다.
마지막으로 finder가 완전히 압축을 풀었고, 그 후 문제없이 파일을 Import할 수 있었습니다.
저도 비슷한 문제가 있었어요.PowerShell에서 mysqldump를 사용하여 모든 데이터베이스를 내보냈습니다.
mysqldump -u root -p --all-databases
PowerShell에서 Import하려고 했을 때:
mysql -u root -p < .\all-databases.sql
에러가 발생했습니다.<
향후 버전용으로 예약되어 있습니다.
그래서 나는 위의 명령어를 사용해 보았습니다.cmd
OP와 같은 에러가 발생했습니다.
해결책은 PowerShell과 다음 명령을 사용하는 것이었습니다.
Get-Content '.\all-databases.sql' | &mysql.exe -u user -p
언급URL : https://stackoverflow.com/questions/17158367/enable-binary-mode-while-restoring-a-database-from-an-sql-dump
'programing' 카테고리의 다른 글
jQuery에서 제목을 URL 슬래그로 변환하는 방법 (0) | 2022.10.11 |
---|---|
레일, MySQL 및 Snow Leopard (0) | 2022.10.11 |
둘러싸는 클래스의 타입을 가진 메서드를 입력하려면 어떻게 해야 합니까? (0) | 2022.10.11 |
PHP를 사용하여 폴더에서 모든 파일을 삭제하시겠습니까? (0) | 2022.10.11 |
PHP 함수 오버로드 (0) | 2022.10.11 |