如果JIRA MySQL字符集设置的不正确,需要修改字符集为utf8mb4, collation为utf8mb4_bin. 需求修改以下几个方面,

  1. 数据库服务器参数修改(character-set-server=utf8mb4 collation-server=utf8mb4_bin)
  2. 数据库的编码方式及collation,数据库中的表的编码方式和collation,表中每个列的编码方式及collation。
  3. confluence的连接数据库参数(配置文件)

JIRA版本utf8mb4编码的要求

必须使用 utf8mb4可以使用 utf8mb4必须使用 utf8
  • Jira >=8.12 
  • Confluence >=7.3 ,  MySQL >=5.7.9 
  • Jira 8.0 - 8.11,  MySQL 5.7 
  • Confluence <=7.2 
  • Jira <=7.13 
  • 或者是所有 MySQL 5.6

具体操作步骤如下:

1、停止jira服务。

2、数据库服务器参数修改:

修改mysql 配置文件, 在my.cnf文件中增加character-set-server=utf8mb4 collation-server=utf8mb4_bin,然后重启mysql

[mysqld]
...
character_set_server=utf8mb4
collation-server=utf8mb4_bin
CODE


3、修改数据库、表、字段的字符集和collation


注意:把下面 SQL 语句中的 jiradb换成使用的 jira数据库的名字, 默认是 jiradb


SET FOREIGN_KEY_CHECKS=0;

//To Change database collation
ALTER DATABASE jiradb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;


//To change table collation:
SELECT CONCAT('ALTER TABLE `',  table_name, '` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;')
FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = 'jiradb'
AND
(
    C.CHARACTER_SET_NAME != 'utf8mb4'
    OR
    C.COLLATION_NAME != 'utf8mb4_bin'
);
//上面语句生成的是修改表编码的SQL语句, 批量拷贝这些语句再执行


//To change column collation for varchar columns:
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_bin', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = 'jiradb'
AND DATA_TYPE = 'varchar'
AND
(
    CHARACTER_SET_NAME != 'utf8mb4'
    OR
    COLLATION_NAME != 'utf8mb4_bin'
);
//上面语句生成的是修改表中数据编码的SQL语句, 批量拷贝这些语句再执行



//To change column collation for non-varchar columns:
SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_bin', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = 'jiradb'
AND DATA_TYPE != 'varchar'
AND
(
    CHARACTER_SET_NAME != 'utf8mb4'
    OR
    COLLATION_NAME != 'utf8mb4_bin'
);
//上面语句生成的是修改表中数据编码的SQL语句, 批量拷贝这些语句再执行


SET FOREIGN_KEY_CHECKS=1;
SQL

4、启动jira