資料表欄位含換行資料(如 PHP 序列化陣列 array('a'=>'b',\n'c'=>'d')),mysqldump 導出時換行轉為 \n。使用重導向導入:
mysql -h localhost -u root -p < backup.sql
報錯:ERROR: 未識別的 "\n" 字符,導入中斷。
<) 由 Shell 直接餵給 MySQL 客戶端,\n 被視為字面字串而非跳脫序列。SOURCE 指令會正確解析跳脫序列。mysql -h localhost -u root -p
mysql> SOURCE /path/backup.sql;
互動模式下 MySQL 會正確處理 \n、\r、\t 等跳脫字元。
mysqldump --hex-blob -u root -p db_name > backup.sql
--hex-blob 將二進位/文字欄位以十六進位導出(如 0x6172726179...),避開跳脫字元問題。
sed -i 's/\\n/\n/g' backup.sql # 僅在確定無其他副作用時使用
SOURCE,而非 Shell 重導向。--hex-blob --single-transaction --master-data=2 確保一致性與相容性。掌握此技巧,避免因換行符導致備份無法還原的風險。