127

私は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'.

iniファイルを入れてみ--binary-modeましたが、それでも同じエラーが発生します。私は何をすべきか?助けてください。

アップデート

ニックがコメントで示唆したように、試し$ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sqlてみましたが、次のようになりました。ERROR at line 1: Unknown command '\☻'. これは 500 Mb のダンプ ファイルであり、gVIM を使用してその内容を表示すると、理解できない式とデータしか表示されません。

4

18 に答える 18

70

ダンプファイルを復元するWindowsでも同じ問題が発生します。私のダンプファイルは、次のようなWindows PowerShellとmysqldumpで作成されました。

mysqldump db > dump.sql

この問題は、powershell のデフォルトのエンコーディングが UTF16 であることから発生します。これをさらに詳しく調べるには、GNU の「ファイル」ユーティリティを使用できます。ここには Windows バージョンが存在します。
私のダンプファイルの出力は次のとおりです。

リトル エンディアン UTF-16 Unicode テキスト、非常に長い行、CRLF 行終端記号付き。

次に、コーディングシステムの変換が必要であり、これを行うことができるさまざまなソフトウェアがあります。たとえば、emacs では、

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

次に、utf-8 などの必要なコーディング システムを入力します。

そして将来的には、より良い mysqldump の結果を得るために、以下を使用します:

mysqldump <dbname> -r <filename>

その後、出力はmysqldumpそれ自体で処理されますが、powershell のリダイレクトではありません。

参照: https://dba.stackexchange.com/questions/44721/error-while-restoreing-a-database-from-an-sql-dump

于 2013-11-20T03:46:59.320 に答える
10

mysqldump次のように Windows PowerShellで実行した後、このエラーが 1 回発生しました。

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

そして、問題は解決しました!

于 2016-01-18T06:41:02.697 に答える
10

Tar アーカイブ ツールを使用してファイルを抽出します。次のように使用できます。

tar xf example.sql.gz
于 2017-05-11T17:27:09.143 に答える
8

notepad++ (または別のエディター) で開いて、UTF-8 に変換/保存してみましたか?

参照: ansi でエンコードされたファイルを utf-8 に変換する notepad++

もう 1 つのオプションは、textwrangle を使用してファイルを開いて UTF-8 として保存することです: http://www.barebones.com/products/textwrangler/

于 2013-06-18T00:31:12.840 に答える
5

dump.sql のファイルの先頭に文字化けがあるか、先頭に空白行がある可能性があります。

于 2015-05-08T12:55:06.717 に答える
3

私も同じ問題を抱えていましたが、ダンプ ファイルは実際には MySQL ではなく MSSQL Server のバックアップであることがわかりました。

レガシーバックアップファイルが私たちにいたずらをすることがあります. ダンプファイルを確認してください。

端末ウィンドウで:

~$ cat mybackup.dmp 

結果は次のとおりです。

TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...

cat コマンドの処理を停止するには:

CTRL + C
于 2015-07-15T21:29:27.460 に答える
0

ファイルの拡張子は .sql のみである必要があります (.zip、.gz .rar) などはサポートされません。例: dump.sql

于 2017-10-23T01:02:14.990 に答える