從 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
這種看起來很奇怪。
對
--binary-mode
(在 MySQL 5.6.3 中引入)的引用可能會分散注意力。聽起來你不是在處理 mysqldump 輸出文件。試試這個
file
實用程序。shell> file dumpfile.sql dumpfile.sql: ASCII text
如果您沒有收到
ASCII text
響應,那麼您正在處理的內容要麼根本不是轉儲文件mysqldump
,要麼您正在處理已壓縮的內容(例如,使用 gzip 或 bzip2),您’ d 需要先解壓縮,然後再將其導入mysql
.如果你看到
SQLite 3.x database
了,那麼你肯定有答案……它是一個原始 SQLite 數據庫,而不是 MySQL 轉儲文件。事實上,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 使用者:“文件”實用程序是來自 Unix 的工具,但可以在此處找到 Windows 版本。
視窗
使用此命令創建轉儲文件
.\mysqldump [dbname] -r [filename.sql]
使用:
.\mysqldumb --help
-r,–結果文件=名稱
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.