首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 預存程序的字符集問題

     編輯:MySQL 資料庫相關知識

問題背景

在 MySQL 預存程序中定義參數時,無法指定其字符集。因此呼叫預存程序時,會預設讀取全域變數 character_set_server,而且只讀取 MySQL 啟動時該全域變數的值,作為預存程序中預設的傳輸字符集。

問題現象

  • 若資料表/欄位使用系統預設字符集(如 latin1),呼叫預存程序更新非英文字串欄位時,不會發生問題。
  • 若資料表/欄位的字符集不是系統預設字符集(例如預設為 latin1,但資料表使用 utf8),就會出現字符集不匹配問題。

解決方案

在 my.cnf(Windows 下為 my.ini)中增加以下任一行配置:

default-character-set=utf8

或

character-set-server=utf8

注意:若只是在 mysqld 啟動後,在 MySQL 命令列中用 SET 語法更新,則不起作用。必須在配置檔中設置並重啟 MySQL 服務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved