2015年7月9日木曜日

dcm4chee-2.18.Xのデータベースpacsdbは2.17.Xのものとは違うらしい

昨日のゼミで原因がわからなかった以下のエラーについて,やっと原因が判明した.

2015-07-08 14:41:52,997 INFO  -> (main) [org.jboss.deployment.EARDeployer] Started J2EE application: file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-web-ear-3.0.4-mysql.ear
2015-07-08 14:41:52,998 ERROR -> (main) [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete Deployment listing:

--- Incompletely deployed packages ---
org.jboss.deployment.DeploymentInfo@cd286966 { url=file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-wado-service.xml }
  deployer: org.jboss.deployment.SARDeployer@3adc2c8
  status: Deployment FAILED reason: - nested throwable: (java.lang.reflect.InvocationTargetException)
  state: FAILED
  watch: file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-wado-service.xml
  altDD: null
  lastDeployed: 1436334099282
  lastModified: 1436334099000
  mbeans:

--- MBeans waiting for other MBeans ---
ObjectName: persistence.units:ear=dcm4chee-web-ear-3.0.4-mysql.ear,unitName=dcm4chee-arc
  State: FAILED
  Reason: javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing table: published_study
ここで,最後のメッセージに注目していただきたい.「Missing table: published_study」とある.そう,テーブルpublished_studyがないということだ.我々は2.17.1をインストールして動作を確認後,データベースをそのままにしてシステムだけバージョン2.18.1に上げようとしていた.しかし,2.17.Xと2.18.Xではデータベースpacsdbの構造が違うのだ.少なくとも2.17.Xにはpublished_studyという名のテーブルなどない.これは,実際に確認済みである.また,/sql/create.mysqlにpacsdbを作るSQL(というかDDL)があるが,その中身を比較したところ,確かに2.17.1にはなかったpublished_studyのcreate table文が2.18.1にはあった.
そこで,いったんpacsdbを削除し,再度作り直すとエラーは消えた.
$ mysql -uroot -p
mysql> create database pacsdb;
mysql> grant all on pacsdb.* to 'pacs'@'localhost' identified by 'pacs';
mysql> \q
# cd /usr/local/app/dcm4chee-2.18.1-mysql/sql
# mysql -upacs -ppacs pacsdb < create.mysql
それだけのことだった.そのそれだけのことでこれだけハマってしまった.データベースは作り直さなくてもよいはずだという固定観念が今回のトラブルを呼んだようだ.しかし,本番のデータベースの場合,移行する方法はあるのだろうか.今回はテストだからいったん削除して再度作り直したけれども・・・.
さらに,2.17.Xと2.18.Xを併存させるには一体どうすればよいのだろうか?まさか,データベースを別々に持つ?そんな馬鹿な・・・.

0 件のコメント:

コメントを投稿