將本地 MySQL 5.1.45 (UTF-8) 的資料庫匯出檔,導入遠端免費空間的 MySQL 5.1.33 (UTF-8) 時,反覆出現:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
匯出檔包含 MySQL 版本專用的條件註釋(`/*!40101 ... */`),目標資料庫版本或字元集設定不相容,導致這些語句執行失敗。實際上是字元集聲明衝突:來源為 utf8,目標若預設為 latin1,會產生亂碼或語法錯誤。
用文字編輯器開啟 `.sql` 匯出檔,刪除以下四行:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
儲存後重新匯入即可成功。
原理:強制以 latin1 讀取檔案,再由資料庫內部轉換為 utf8,繞過版本條件判斷。
gbk 為 latin1跨版本、跨環境遷移時,方法一最穩健;長期維護專案請統一資料庫版本與字元集,避免重複踩坑。