InterBaseのセキュリティデータベースの移行の際に「Unsuccessful metadata update, STORE RDB$FIELDS failed, STORE RDB$FIELDS failed attempted update during read-only transaction 」エラーが発生する
対象となる製品
- InterBase XE 以降
問題
このエラーは、InterBaseの古いバージョンから InterBase XE、または、それ以降のバージョンへセキュリティデータベースを移行する際に発生します。 InterBaseのセキュリティデータベースは、デフォルトで ADMIN.IBと命名されています。InterBase XEの以前のバージョンから XEへセキュリティデータベースをバックアップ/リストアし、InterBase XEまたは、それ以降のバージョンで使用すると、次のエラーが発生します。
Unsuccessful metadata update
STORE RDB$FIELDS
failed attempted update during read-only transaction
解決
これは、InterBase XEで強度の高いパスワードのサポートのためにセキュリティデータベースに新しいフィールドを追加したためです。古いバージョンから InterBase XE以降で使用するためにセキュリティデータベースを移行するには、リストアされたデータベースに対して以下の SQLを実行します。
CREATE DOMAIN PASSWORD_DIGEST AS VARCHAR(16) CHARACTER SET ASCII;
alter table users add password_digest password_digest;
update users set password_digest='SHA-1' where user_name='SYSDBA';