firebirdのテーブルがDROPできない

categoryという名前のテーブルを作成して、それを削除しようとしたら、

SQL> drop table category;
Statement failed, SQLSTATE = 42000
unsuccessful metadata update
-object CATEGORY is in use

というエラーが発生してテーブルが削除することができなかった。原因は、トランザクションでコミットしていない処理が残っていたから。
SQL> commit;
と入力してやってからdropを実行すると上手く行った。

と、思ったら、commitしてもテーブルを削除できない現象を確認した。CATEGORYオブジェクトは使用中である・・・ふむ。
firebirdのisqlを一旦quitコマンドで終了させて、再度起動してデータベースに接続してみたら、今度はdropコマンドが通った。う~ん、なんだこりゃ。

あ、わかった。isqlで繋げたまま、delphiのIDEでも繋げていたからおかしな現象が発生していた模様。めんどくさいけどisqlはその都度接続するようにしないといかんな。

コメントを残す

メールアドレスが公開されることはありません。