文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  字元集、校對、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 節「連線字元集與校對」