【发布时间】:2021-07-21 10:07:39
【问题描述】:
创建迁移时,我插入了一些数据,但新安装的应用程序没有执行迁移。
每次迁移时是否需要在 onCreate 调用中插入/更新数据?
【问题讨论】:
标签: android database android-room database-migration android-jetpack
创建迁移时,我插入了一些数据,但新安装的应用程序没有执行迁移。
每次迁移时是否需要在 onCreate 调用中插入/更新数据?
【问题讨论】:
标签: android database android-room database-migration android-jetpack
如果您安装该应用程序,迁移将不会运行,因为不存在数据库,所以它被创建。
迁移旨在处理正在发布的应用程序的新版本,特别是也会更改 Room 数据库版本的新版本。
每次迁移时是否需要在 onCreate 调用中插入/更新数据?
否! onCreate 不会运行,它只会在数据库的生命周期内自动运行一次(除非您从迁移中调用它)。
您应该按照迁移代码中的要求执行操作,然后取决于您执行的操作。例如:-
例如,如果添加一列并且您使用 ALTER TABLE your_table ADD COLUMN the_new_column_definition,则保留现有数据。
如果添加新表,则没有问题。
但是,如果您想更改列的定义(而不是名称),则必须删除并重新创建表。通常会做的是创建新表,从原始表填充它,重命名或删除原始表,然后将新表重命名为原始表的名称。
你不妨看看SQLite ALTER TABLE
【讨论】: