使用 mysql < backup.sql 導入 mysqldump 導出檔案時,若出現 ERROR at line N: Unknown command '[',絕大多數是**字符集不匹配**導致 SQL 腳本被錯誤解析。本文給出根因分析、標準解決方案與替代導入方式。
# 錯誤命令
mysql forum < forum.sql -u root -p -h 192.168.0.8
Enter password: ******
ERROR at line 1410: Unknown command '['
mysqldump 預設以 **utf8mb4** 導出(含 SET NAMES utf8mb4 等指令)。--default-character-set,客戶端按系統預設字符集(如 latin1/gbk)解析 SQL 文本。0x[...]),報 Unknown command。
mysql -u root -p --default-character-set=utf8mb4 目標資料庫 < 備份檔.sql
**關鍵點**:--default-character-set 必須放在資料庫名**之前**,且與導出時一致(通常為 utf8mb4)。
mysql -u root -p --default-character-set=utf8mb4
mysql> USE 目標資料庫;
mysql> SET NAMES utf8mb4;
mysql> SOURCE /完整路徑/備份檔.sql;
SET NAMES 影響,靈活度高。D:/backup/file.sql 或雙反斜槓 D:\\backup\\file.sql。
# 從 host1 導出並直接導入 host2
mysqldump -h host1 -u user -p db_name | mysql -h host2 -u user -p db_name
--quick(mysqldump 預設開啟)與 --compress(網路傳輸壓縮)。
mysqldump --default-character-set=utf8mb4 -u user -p db_name > backup.sql
導出檔案開頭會包含 SET NAMES utf8mb4,導入時只要客戶端支援 utf8mb4 即可自動識別,即使忘記加參數也多半不會亂碼。
--default-character-set=utf8mb4?--default-character-set=utf8mb4?SHOW CREATE DATABASE db; SHOW CREATE TABLE tbl;