这个页面介绍了如何将JIRA连接到 MySQL 5.1.x 数据库。
你可以参阅 在Linux上配置JIRA Standalone以及MySQL数据库 。
这个页面的内容:
1. 开始之前的准备工作:
1.1 导出已经存在的JIRA 数据
如果JIRA已经运行了一段时间, 将JIRA的数据备份为XML,就可以参照切换数据库的说明,将数据从旧数据库迁移到新数据库中。
1.2 停止 JIRA
1.3 MySQL 已知的问题
如果你正在使用下面的MySQL版本:
- JIRA 3.13 Standalone 或更高版,
- Tomcat 5.5.25 或更高版本,
- Tomcat 6.0.13 或更高版本,
你可能会遇到连接中断的问题 (浏览 http://jira.atlassian.com/browse/JRA-15731 了解具体情况)。 请阅览 Surviving Connection Closures 了解如何解决。
如果你在使用JIRA和MySQL过程中发现了其他问题, 请浏览 附加说明 。
2. 配置 MySQL
- 创建一个用于JIRA访问MySQL的用户 (例如
jirauser
)。 创建JIRA存储问题的数据库 (例如
jiradb
)。 数据库字符集必须设置为 UTF8。 在MySQL命令行输入下面的命令:create database jiradb character set utf8;
(假设你的数据库名称为
jiradb
)。- 确保你使用的用户有权限连接数据库以及有权限创建数据表。
- 确认MySQL使用的是事物数据库。因为部分JIRA功能会使用到事物处理, 你需要确认MySQL数据库使用的是 InnoDB 存储引擎。避免使用 MyISAM 存储引擎,因为MyISAM存储引擎可能会导致数据损坏。
请注意如果你配置的JIRA使用InnoDB引擎的MySQL数据库,并且 你希望使用二进制日志, 你必须将MySQL的二进制日志格式配置为 'row-based'。 否则, 在JIRA中创建问题时可能会出现错误。 更多信息请访问 JIRA 在使用MySQL二进制日志时无法创建问题。
3. 将 MySQL 驱动复制到应用服务器
如果你使用的是 JIRA Standalone 版请跳过此步骤, 因为 JIRA Standalone 已经包含了这个驱动。
下载 MySQL Connector/J JDBC driver v5.1
有用户报告了在使用MySQL的Resin JDBC 驱动时会发生错误。因此,请使用MySQL的 Connector/J 驱动。
- 将 MySQL JDBC 驱动 jar文件 (
mysql-connector-java-5.x.x-bin.jar
) 复制到lib/
文件夹。
4. 使用JIRA配置工具
JIRA 配置工具是图形化工具,只能用于JIRA Standalone。如果你使用的是 WAR-EAR 版, 或JIRA服务器只有文本模式, 你需要手动配置。
- 点击 'Database' 标签页
- 从 'Database type' 下拉列表中选择 'MySQL'。
- 填写MySQL数据库的连接串:
- Hostname — MySQL数据库服务器的名称或IP地址。
- Port — MySQL数据库服务器监听端口号。 留空将使用默认端口。
- Database — 数据库的名称。
- Username — 访问MySQL数据库服务器的账号。
- Password — 访问MySQL数据库服务器的授权密码。
- 输入完以上信息, 点击 'Test Connection' 按钮测试连接是否成功。 工具会尝试连接数据库,并返回测试结果。
- 点击 'Save' 保存你配置的选项。
- 重新启动JIRA服务器。
祝贺你,你已经完成了数据库配置!
5. 手动配置数据库连接
如果你已经是通过JIRA配置工具设置好数据库连接(参见 前面章节),请跳过此步骤。
5.1. 配置应用服务器与MySQL的连接
编辑
conf/server.xml
(如果你使用的是JIRA Standalone),为数据库连接配置正确的username
,password
,driverClassName
以及url
等参数。 (如果你使用的是 JIRA WAR/EAR, 编辑应用服务器相应的文件,例如 Tomcat, 编辑conf/Catalina/localhost/jira.xml
)。假设在下面XML文件中使用的数据库URL连接的是UTF-8数据库 — 例如 通过
create database jiradb character set utf8;
创建的数据库。 如果你没有指定character set utf8
,你可能会在导入数据或不支持字符时遇到 'Data truncation: Data too long for column
' 的错误。 具体说明请参见 在MySQL中存储非ASCII字符 。注意: 如果在XML文件中输入转义字符 '
&
',需要在后面添加 'amp;
', 就像下面的例子:<Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="${catalina.home}/atlassian-jira" reloadable="false"> <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource" username="[输入数据库用户名]" password="[输入数据库密码]" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/jiradb?useUnicode=true&characterEncoding=UTF8" [ 删除这里的 minEvictableIdleTimeMillis 以及 timeBetweenEvictionRunsMillis params ] maxActive="20" validationQuery="select 1"/> <Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction" factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/> <Manager pathname=""/> </Context> </Host> </Engine> </Service> </Server>
(注意: 如果你找不到这段代码, 可能你打开了错误的文件 - 在
conf/
文件夹中搜索 'jira'。)- 如果你使用的是JIRA Standalone, 编辑
conf/server.xml
, 并删除minEvictableIdleTimeMillis
以及timeBetweenEvictionRunsMillis
两行 (这两个属性值只用于HSQL, 不删除会降低MySQL的性能)。 - 如果你希望设置应用服务器的数据库连接验证 (例如 数据库连接经常会中断), 你需要添加
validationQuery
参数,并将属性值设置为 "select 1"。 请查看上面的XML例子。
5.2 配置 JIRA Entity Engine
编辑
atlassian-jira/WEB-INF/classes/entityengine.xml
(如果你使用的是JIRA Standalone) 或edit-webapp/WEB-INF/classes/entityengine.xml
(JIRA WAR/EAR), 并将field-type-name
的值更改为mysql
。 (如果你忘记更改了这个属性值并启动了JIRA, JIRA将无法正确地创建数据表。 如果发生了这种情况,请查看 这个页面修复错误)。 同时要删除schema-name="PUBLIC"
:<!-- DATASOURCE - You will need to update this tag for your installation. --> <datasource name="defaultDS" field-type-name="mysql"[ 删除 : schema-name="PUBLIC" ] helper-class="org.ofbiz.core.entity.GenericHelperDAO" check-on-start="true" use-foreign-keys="false" ...
如果你使用的是 JIRA WAR/EAR, 根据不同的 应用服务器,可能会需要更改
entityengine.xml}}的其他配置 (例如 定义 {{jndi-jdbc
)。
5.2 下一步
你现在已经为应用服务器配置了数据库连接,并且也为JIRA配置了正确的数据库类型。 如果你使用的是 JIRA Standalone, 启动JIRA并根据日志查看启动错误。 如果你使用的是 JIRA WAR/EAR 版, 在应用服务器中重构并重新部署 webapp。
安装说明
请参见 JIRA 和 MySQL。