Tagbangers Blog

JIRA にembedされてるH2データベースにアクセスする

JIRAをローカルでちょっと試してみたい時はエンベデッドのH2データベースを利用できます。(もちろん本番環境では非推奨です)

このH2データベースのアクセス方法をまとめます。

注意:ローカルでJIRAが立ち上がった状態でDBにアクセスすることはできません。必ず止めた状態でアクセスしてください。

DB設定はどこにあるの

JIRAのDB接続に関する情報は<jira-home>/dbconfig.xml に書いてありますので、確認してみます。

<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>h2</database-type>
  <schema-name>PUBLIC</schema-name>
  <jndi-datasource>
      <jndi-name>java:comp/env/jdbc/JiraDS</jndi-name>
  </jndi-datasource>
</jira-database-config>


h2の設定はjiraDSに書いてるようなので、同じディレクトリ配下にあるjiraDS.propertiesファイルも参照すると、ありました。

jndi=jdbc/JiraDS
url=jdbc:h2:file:${jirahome}/database/h2db
driver-class=org.h2.Driver
username=sa
password=


または、JIRA起動時にDB設定がログに表示されるので、それをチェックするのも簡単ですね。

[INFO] [talledLocalContainer]  ___ Database Configuration _________________
[INFO] [talledLocalContainer]     
[INFO] [talledLocalContainer]  Loading entityengine.xml from    : file:/<jira-application-dir>/target/container/tomcat8x/cargo-jira-home/webapps/jira/WEB-INF/classes/entityengine.xml
[INFO] [talledLocalContainer]  Entity model field type name     : h2
[INFO] [talledLocalContainer]  Entity model schema name         : PUBLIC
[INFO] [talledLocalContainer]  Database Version                 : H2 - 1.4.185 (2015-01-16)
[INFO] [talledLocalContainer]  Database Driver                  : H2 JDBC Driver - 1.4.185 (2015-01-16)
[INFO] [talledLocalContainer]  Database URL                     : jdbc:h2:file:/<jira-application-dir>/target/jira/home/database/h2db
[INFO] [talledLocalContainer]  Database JNDI config             : h2 java:comp/env/jdbc/JiraDS

上記の設定が見つかったら、urlを参照するだけです。


CLI ベースでアクセス

h2のサイトからH2のjarファイルをダウンロードし、<jira-application-dir>/WEB-INF/lib/ディレクトリに配置します。

このディレクトリまで移動して以下を実行

$  java -cp h2-1.4.***.jar org.h2.tools.Shell
Welcome to H2 Shell 1.4.196 (2017-06-10)
Exit with Ctrl+C
[Enter]   jdbc:h2:file:/<jira-application-dir>/database/h2db
URL       jdbc:h2:file:/<jira-application-dir>/target/jira/home/database/h2db  //アクセスするURLを指定
[Enter]   org.h2.Driver
Driver    //Enter
[Enter]   sa
User      //Enter
[Enter]   Hide
Password  //Enter
Password  
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

こんな感じでアクセスできました。

ちなみに Confluenceでも評価版にはH2が組み込みされてるので、 <confluence-home>/database/h2db に対して同様にアクセスできます。

参考

https://confluence.atlassian.com/jirakb/accessing-jira-s-h2-embedded-database-776818136.html