文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  字元集、校對、Unicode  /  錯誤訊息字元集

12.6 錯誤訊息字元集

本節說明 MySQL 伺服器如何使用字元集來建構錯誤訊息。如需錯誤訊息的語言(而不是字元集)的相關資訊,請參閱第 12.12 節,「設定錯誤訊息語言」。如需設定錯誤記錄的一般資訊,請參閱第 7.4.2 節,「錯誤記錄」

錯誤訊息建構的字元集

伺服器建構錯誤訊息的方式如下:

  • 訊息範本使用 UTF-8 (utf8mb3)。

  • 訊息範本中的參數會取代為適用於特定錯誤發生的值

    • 資料表或資料行名稱等識別碼在內部使用 UTF-8,因此會照原樣複製。

    • 字元(非二進位)字串值會從其字元集轉換為 UTF-8。

    • 二進位字串值會針對範圍 0x200x7E 中的位元組照原樣複製,並針對該範圍外的位元組使用 \x 十六進位編碼。例如,如果嘗試將 0x41CF9F 插入 VARBINARY 唯一資料行時發生重複鍵錯誤,則產生的錯誤訊息會使用 UTF-8,其中部分位元組會以十六進位編碼

      Duplicate entry 'A\xCF\x9F' for key 1

錯誤訊息配置的字元集

建構完成的錯誤訊息可以由伺服器寫入錯誤記錄或傳送至用戶端

  • 如果伺服器將錯誤訊息寫入錯誤記錄,則會以 UTF-8 寫入,如建構時,而不會轉換為另一個字元集。

  • 如果伺服器將錯誤訊息傳送至用戶端程式,則伺服器會將其從 UTF-8 轉換為 character_set_results 系統變數指定的字元集。如果 character_set_results 的值為 NULLbinary,則不會發生轉換。如果變數值為 utf8mb3utf8mb4,也不會發生轉換,因為這些字元集的字庫包含訊息建構中使用的所有 UTF-8 字元。

    如果字元無法以 character_set_results 表示,則轉換期間可能會發生某些編碼。編碼會使用 Unicode 碼位值

    • 基本多文種平面 (BMP) 範圍 (0x00000xFFFF) 中的字元會使用 \nnnn 符號寫入。

    • BMP 範圍外的字元 (0x100000x10FFFF) 會使用 \+nnnnnn 符號寫入。

    用戶端可以設定 character_set_results 來控制其接收錯誤訊息時使用的字元集。可以直接設定變數,也可以透過諸如 SET NAMES 等方式間接設定。如需 character_set_results 的詳細資訊,請參閱第 12.4 節,「連線字元集與校對」