自動マイグレーション機能

プラグインの更新時、Qmonus SDKではDBを自動でマイグレーションする機能が存在します。

例えば、新plugin(DB schemaを変更したplugin)を既存の環境に読み込ませることを想定します。 その際、DB schemaの変更内容に応じてQmonusSDKが自動でマイグレーションする場合、何もしない場合、pluginの読み込みに失敗する場合の3通りが生じます。そのため、一部は開発者が対応しなければならない点があることに留意してください。


DB Schemaの変更

DB Schemaとそのサポート状況については以下の通りとなります。

項番 DB Schema変更内容 サポート状況
1. テーブル追加 QmonusSDKで自動migration
2. テーブル削除 何もしない (手動対応が必要)
3. カラム追加 QmonusSDKで自動migration
4. カラム削除 QmonusSDKで自動migration
5. カラムの属性変更 何もしない (手動対応が必要)
6. 制約追加 (not null, unique) 何もしない (手動対応が必要)
7. 制約追加 (foreign key) QmonuSDKで自動migration
8. 制約削除 (not null, unique) 何もしない (手動対応が必要)
9. 制約削除 (foreign key) QmonuSDKで自動migration


ATOMの変更

ATOMの変更内容と、それによって起きるDB Schemaの変更は以下の通りとなります。

項番 ATOM変更内容 DB schema変更内容
1. class追加 テーブル追加
2. class削除 何もしない (手動対応が必要)
3. local_field追加 カラム追加
4. local_field削除 カラム削除 + (制約削除)
5. local_fieldの属性追加 (field_persistence) カラム追加
6. local_fieldの属性追加 (field_nullable, field_unique) 何もしない (手動対応が必要)
7. local_fieldの属性追加 (field_immutable, field_default) 制約追加 (field_immutable, field_default)
8. local_fieldの属性削除 (field_persistence) カラム削除
9. local_fieldの属性削除 (field_nullable, field_unique) 何もしない (手動対応が必要)
10. local_fieldの属性削除 (field_immutable, field_default) 制約削除 (field_immutable, field_default)
11. local_fieldのtype変更 SDKのバリデーション変更 (DB操作が必要)
12. ref_field追加 カラム追加 + 制約追加 (foreign key)
13. ref_field削除 カラム削除 + 制約削除 (foreign key)
14. ref_fieldの属性追加 (field_persistence) カラム追加 + 制約追加 (foreign key)
15. ref_fieldの属性追加 (field_unique) 何もしない (手動対応が必要)
16. ref_fieldの属性追加 (field_nullable) 制約追加 (nullable)
17. ref_fieldの属性追加 (field_immutable) SDKにて制約追加
18. ref_fieldの属性削除 (field_persistence) カラム削除 + 制約削除 (foreign key)
19. ref_fieldの属性削除 (field_unique) 何もしない (手動対応が必要)
20. ref_fieldの属性削除 (field_nullable) 制約削除 (nullable)
21. ref_fieldの属性削除 (field_immutable) SDKにて制約削除
22. ref_fieldのtype変更 カラムの属性変更