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

私は試した $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sqlしかし、これは私に以下を与えましたERROR at line 1: Unknown command '\☻'.これは500 Mbのダンプファイルであり、gVIMを使用してその内容を表示すると、わかりにくいのは式とデータだけです。また、ファイルからコンテンツをコピーしてここに投稿しようとすると、コピーできるのは:SQLite format 3この種のことは奇妙に思えます。

14
user1434997

--binary-mode (MySQL 5.6.3で導入)への参照は、おそらく注意散漫になります。

Mysqldump出力ファイルを扱っているようには思えません。 fileユーティリティを試してください。

Shell> file dumpfile.sql
dumpfile.sql: ASCII text

ASCII text応答が得られない場合は、mysqldumpからのダンプファイルではないもの、または圧縮されたもの( gzipやbzip2など)、mysqlにパイプする前に解凍する必要があります。

SQLite 3.x databaseが表示された場合は、間違いなく答えがあります。これは、MySQLダンプファイルではなく、生のSQLiteデータベースです。

実際、SQLiteデータベースの最初の数バイトは次のとおりです。

53 51 4C 69 74 65 20 66  SQLite f
6F 72 6D 61 74 20 33 00  ormat 3^@

ここでの16番目のオクテットは0x00であり、この場合のERROR: ASCII '\0' appeared in the statement...メッセージを説明していることに注意してください。 --binary-modeが適切であるという提案は、誤警報です。


Windowsユーザー: 'file'ユーティリティはUnixのツールですが、Windowsバージョンは here で見つかります。

18

ウィンドウズ

このコマンドでダンプファイルを作成する

.\mysqldump [dbname] -r [filename.sql]

使用:

.\mysqldumb --help

-r、-result-file = name

                 Direct output to a given file. This option should be used
                 in systems (e.g., DOS, Windows) that use carriage-return
                 linefeed pairs (\r\n) to separate text lines. This option
                 ensures that only a single newline is used.

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

そして問題は消えました!

1
Ifedi Okonkwo

PowerShellの私も

PowerShellを使用して mysqldump および> を呼び出すときにこの問題が発生しました出力をファイルにパイプします。 PowerShellはファイルの作成時に誤ったエンコードを使用しており、 mysql .. <exported-file.sql を使用してファイルをインポートしようとすると、同じエラーが表示されました

PowerShellセッションでデフォルトのエンコーディングをUTF8に設定すると、この問題が解決することがわかりました。

私の解決策-テスト済みのPowerShell 5.1:

$PSDefaultParameterValues["Out-File:Encoding"] = "utf8";

例:エクスポートの作成方法(simplified)

$cmdExportDB = "mysqldump --Host $Host --databases $DbName -u $UID =p$PWD > $fileName";
Invoke-Expression "& $cmdExportDB";

注:これはPowerShell 4.0では機能しないことを発見しました

開発環境は5.1を実行していましたが、製品版は4.0であり、最初の修正は古いバージョンのPowerShellでは機能しません。

| Set-Content -Encoding UTF8 $fileNameを使用する必要があります

これはすでにイフェディによって提案されました

1
Nicholas

誰かが圧縮されたgtarを送ってくれました。 gtarにはあまり慣れていませんでしたが、これは別の圧縮形式です。

$ file core_production-1432173533.sql.gtar
core_production-1432173533.sql.gtar: gzip compressed data, from Unix, last modified: Wed May 20 21:59:31 2015

ただし、通常どおりに解凍することができました。

tar -zxvf core_production-1432173533.sql.gtar
$ file core_production-1432173533.sql
core_production-1432173533.sql: ASCII text, with very long lines

そして、私はインポートを行うことができました:

mysql -u root -p -h localhost core_production < core_production-1432173533.sql
0
Donato

私の場合、ファイルが壊れていました。データベースは拡張子.bz2で圧縮されましたが、実際は.tar.bz2でした。

bzip2 -dkを使用した逆圧縮は、エラーを出力せず、ファイルを生成します。ファイルでコマンドfileを使用するとbzip2 compressed data, block size = 900kが出力されるため、使用するのが間違っているように見えません。

tar -xf myfile.bz2を使用する必要がありました

0
monstercode

解決策:バックアップファイルを抽出してから、この抽出されたSQLダンプを復元します。

例:

バックアップはdump.sql.gzファイルとして取得され、gunzip cmdを使用して次のように抽出します。

Shell>  gunzip dump.sql.gz

そして、RESTOREによって抽出されたdump.sqlファイル。

参照:MySQLバイナリおよびインタラクティブモードについて。

http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode

それは私とすべてのセットで機能します!!

0
lalit

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

参照: https://stackoverflow.com/questions/7256049/notepad-converting-ansi-encoded-file-to-utf-8

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

0
Menios