DB2でDBがないのにあると言われた話

db2 db2
dbb2 dbb2

開発環境構築のお手伝いをしている時にDB2でDBが作れない!という方に遭遇。
みんな作れているのになんでその環境だけ作れないのさ?と思い調査した時のお話。

環境

Windows7
DB2 Express-C 10.1.0.872

CREATE DB実行時に発生したエラー

CREATE DB DB_NAME USING CODESET UTF-8 TERRITORY JP
SQL1005N  データベース別名 "DB_NAME"は、すでにローカル・データベース・ディレクトリーまたはシステム・データベース・ディレクトリーのどちらかに存在しています。

解析

いや、もうDBできてるんでしょ?
db2 list db directoryしてみる。
あれ?出てこない。

何かゴミが残ってるのかな?
DROP DB DB_NAMEしてみる。
SQL1013N データベース別名またはデータベース名 "DB_NAME"が見つかりませんでした。 SQLSTATE=42705
DBは見つからない。

じゃあ作れるでしょ?もう一回
CREATE DB DB_NAME USING CODESET UTF-8 TERRITORY JPしてみる。
同じ存在していますエラーが発生。
OK。状況は理解できた。DBがないのにあると言われる。トンチですか?

対応

LIST DATABASE DIRECTORY ON C:
するとカタログされていないがディスク上に存在するDB_NAMEが表示された。
C:ドライブでなければ別のドライブにいたかもしれない)

一旦、DB2 CATALOG DATABASE DB_NAME ON C:でカタログしてあげると
db2 list db directoryで表示されるようになったのでDROPしてからCREATE DBを実行して解決。

原因

エラーが発生した端末では過去に偶然、同名のDBを作成し削除した事があった模様。
(DB_NAMEは検証環境として誰でも思いつきそうな恐ろしく無難な名前だった)
もっとオリジナティ溢れる名前を指定しておけばこんな事にはならなかったのだろうな、
と思いつつも勉強になったので感謝。