Jira基础:备份恢复时字符集出现问题的对应方法

这篇文章介绍一下Jira在使用备份恢复时字符集出现问题的对应方法。

现象

在Jira进行迁移或者备份的时候,在新的Jira的实例中通过菜单导入之前备份的zip文件,如果字符集有问题,一般会出现如下图类似的错误信息:
在这里插入图片描述

原因

以本文碰到的问题为例,实际的问题是因为字符集的问题,从如下的MySQL的数据库的字符集编码可以看到
在这里插入图片描述
character_set_database的设定为latin1,所以对于utf8中的汉字无法正常动作。

对应

utf8 vs utf8mb4

utf8旧版(RFC 2279)标准最多支持每个字符6个字节,在2002年MySQL在4.1 preview版中使用此标准,然后后续对此进行了调整,使得utf8最多能够支持三个字节的序列。MySQL中对于utf8新版整整的支持是从2003年的4.1版本时开始的,而utf8标准(RFC 3629)是2003年底才出的初版而且还在不断更新,UTF8每个字符最多会有四个字节,所以后续(2010年)MySQL悄悄推出了utf8mb4这么长的名称来表示真正的UTF8,尴尬的情况就是之前的数据库有可能需要重新构建。一般可能不会出错,出错的时候可以考虑朝这个方向考虑一下。本文示例中继续使用utf8,虽然在MySQL中utf8mb4是utf8的超集,为了不引起因字符集转换引起的新的问题,本文继续使用utf8,新数据库创建的时候应当认真考虑这个问题。

设定参数

MySQL的Server端应当设定如下参数以保证

启动参数 设定值
character_set_server utf8

collation-server、utf8_general_ci

常用命令

如下MySQL命令可能会被使用:

查询字符集类别:show variables like ‘%character%’

修改字符集类别:alter database <数据库名> character set utf8;

docker-compose.yml示例

[root@server-228 jira]# cat docker-compose.yaml 
version: '2'

services:
  # database service: mysql
  mysql:
    image: mysql:5.7.16
    ports:
      - "32011:3306"
    volumes:
      - ./data/:/var/lib/mysql
      - ./conf.d/:/etc/mysql/conf.d
    environment:
      - MYSQL_ROOT_PASSWORD=liumiaocn
      - MYSQL_DATABASE=jira
      - MYSQL_USER=jira
      - MYSQL_PASSWORD=liumiaocn
    command:
      --character_set_server=utf8
      --collation-server=utf8_general_ci
    restart: "no"

  # Ticket Management service: jira
  jira:
    image: jira:7.5.0
    ports:
      - "32043:8080"
    volumes:
      - ./jira:/var/atlassian/application-data/jira
    links:
      - mysql:mysql
    restart: "no"
[root@server-228 jira]# 
  • 确认server端字符集
    示例结果日志如下所示:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

mysql> 

总结

虽然是备份恢复时出现的问题,但是很多情况可能与此相关,比如安装时选定中文,但缺省数据库却没有进行utf8的设定,可能也会出现类似的问题,可同样进行对应即可。

发布了1084 篇原创文章 · 获赞 1299 · 访问量 402万+

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/104306295
今日推荐