web-dev-qa-db-ja.com

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ファイルに入れようとしましたが、それでも同じエラーが発生します。私は何をすべきか?助けてください。

UPDATE

Nickのコメントで示唆されたように、私は$ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sqlを試しましたが、次のERROR at line 1: Unknown command '\☻'.を提供しました。これは500 MBのダンプファイルです。わかりにくいです。

63
user1434997

ファイルを解凍し、再度インポートします。

138
srinivas

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

mysqldump db > dump.sql

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

CRLF行ターミネータを使用した、非常に長い行を持つリトルエンディアンUTF-16 Unicodeテキスト。

それからコーディングシステムの変換が必要であり、これを行うことができるさまざまなソフトウェアがあります。たとえば、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-restoring-a-database-from-an-sql-dump

44
cdarlint

Windowsマシンでは、上記の手順に従ってください。

  1. メモ帳でファイルを開きます。
  2. [名前を付けて保存]をクリックします
  3. エンコードタイプUTF-8を選択します。

次に、dbを入手します。

10
Amit Kumar Rai

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

参照: notepad ++からansiエンコードファイルをutf-8に変換

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

7

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

tar xf example.sql.gz
7
Ghasem Pahlavan

Windows PowerShellでmysqldumpを実行した後、このエラーが発生しました。

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

そして、問題はなくなりました!

4
Ifedi Okonkwo

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

4
Subodh Ranadive

Dump.sqlの問題を報告する必要があります。SequelProを使用して、ファイルのエンコードを確認します。dump.sqlに文字化けがあります。

2
Datty Wang

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

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

ターミナルウィンドウで:

~$ cat mybackup.dmp 

結果は次のとおりです。

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

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

CTRL + C
2
Hugo Miura

十分なスペースがない場合や、解凍に時間を無駄にしたくない場合は、このコマンドを試してください。

gunzip < compressed-sqlfile.gz | mysql -u root -p

Compress-sqlfile.gzを圧縮ファイル名に置き換えることを忘れないでください。

.gz復元は、上記で提供したコマンドなしでは機能しません。

2
Dewlance

インポートしようとしているファイルはZipファイルです。ファイルを解凍し、インポートを再試行してください。

1
Javaid Mir

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

0
Ibrahim Akbar