Mysql

從 SQL 轉儲還原數據庫時出錯

  • May 7, 2021

我對 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.

引用自:https://dba.stackexchange.com/questions/44721