JIRA是一套功能強大的專案管理系統,想要正確安裝與管理也要花相當的功夫。
最近幾天在升級舊有的JIRA server到新的機器上,就發生了不少問題。其中一個問題就是無法輸入漢文。或更廣泛的來說,就是無法支援CJKV語系。
中文輸入在舊的機器上是正常的,在新的主機上無法運行有點匪夷所思,上網看了官方的文件以及一些討論,發現是資料庫文字編碼設定成拉丁語(Latin)而非漢文(Chinese)的緣故。
這個問題的解決方式,簡單說就是:
- 將預設的MySQL server的文字編碼設定成UTF8。
- 並將建立給JIRA使用的資料庫之文字編碼也設定成UTF8。
設定MySQL server
首先,編輯/etc/mysql/my.cnf。加入如下的設定。
- 設定預設編碼格式為UTF-8:
[mysqld]…character-set-server=utf8collation-server=utf8_bin… - 將預設的儲存引擎設定為InnoDB:
[mysqld]…default-storage-engine=INNODB… - 變更max_allowed_packet為不小於40M:
[mysqld]…max_allowed_packet=40M… - 確保sql_mode參數不是NO_AUTO_VALUE_ON_ZERO:
// remove this if it existssql_mode = NO_AUTO_VALUE_ON_ZERO
建立資料庫
安裝JIRA前,要先建立資料庫(JIRA安裝設定時,會自行建立相關之資料表)。
- 建立資料庫:
CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin; - 賦予存取權限:
GRANT ALL PRIVILEGES ON confluence.* TO ‘confluenceuser’@’localhost’ IDENTIFIED BY ‘confluencepass’;
將資料庫升級為支援UTF8編碼之資料庫
如果JIRA已經開始運行,又不想重新安裝並重新匯入整個JIRA資料的話。就必須設法變更MySQL資料庫裡既有資料表的文字欄位編碼為UTF8。詳細的方法可以參考Atlassian的官方文件(Change MySQL Database Character Encoding to UTF8 During Server Migration)。