萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 匯入報錯 40101 SET @OLD_CHARACTER_SET_CLIENT 解決方案

錯誤場景

將本地 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 */;

儲存後重新匯入即可成功。

方法二:phpMyAdmin 匯入時指定字元集

  1. 在 phpMyAdmin 匯入頁面,將「檔案字元集」選為 latin1
  2. 執行匯入

原理:強制以 latin1 讀取檔案,再由資料庫內部轉換為 utf8,繞過版本條件判斷。

方法三:匯出前轉檔(預防為主)

  1. phpMyAdmin 匯出時保持預設設定
  2. 用記事本開啟匯出檔,另存為 ANSI 編碼
  3. 全域替換 gbk 為 latin1
  4. 再行匯入

建議

跨版本、跨環境遷移時,方法一最穩健;長期維護專案請統一資料庫版本與字元集,避免重複踩坑。

copyright © 萬盛學電腦網 all rights reserved