Android Room - 两个同名数据库

问题描述 投票:0回答:1

我有一个应用程序,并且我已经集成了存储空间。 我在应用程序模块中有一个数据库,并且有一个用于开发人员环境选择器的单独模块/库。 我在该模块中也有一个数据库。

但是我注意到两个模块中的数据库具有相同的名称。 这会导致数据完整性问题,因为网络模块的数据库是在上一个版本中引入的。

Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number. Expected identity hash: 40e26e7134224a73639f9d83df276f33, found: a8ce1bbdb059fa47182a881598adb8ff

因此当前无法访问应用程序数据库中的数据。

例如

    @Provides
    @Singleton
    fun provideDeveloperEnvironmentDatabase(@ApplicationContext appContext: Context) :
            DeveloperEnvironmentDatabase {
        return Room.databaseBuilder(
            appContext,
            DeveloperEnvironmentDatabase::class.java,
            "mobile_order_database"
        ).build()
    }


    @Provides
    @Singleton
    fun provideMobileOrderDatabase(@ApplicationContext appContext: Context) :
            MobileOrderDatabase {
        return Room.databaseBuilder(
            appContext,
            MobileOrderDatabase::class.java,
            "mobile_order_database"
        ).build()
    }

我的开发环境数据库中的内容不是必需的,可以在下次 devs/qa 安装应用程序时重新填充。 是否有任何方法可以在我的下一个版本中处理这种情况,以便留出空间来提供存储的数据?

任何帮助将不胜感激。 我尝试在数据库中添加自动迁移,但这不起作用。 如果房间里比我更有经验的人可以提供帮助,我将不胜感激

android sqlite android-room
1个回答
0
投票

只需更改“不是必需的”的数据库名称,以便下次需要时使用新名称重新创建它。

在现在仍然存在错误的“mobile_order_database”文件的所有设备上,您需要通过执行以下步骤之一来删除它们:

  • 清除应用程序的数据
  • 卸载应用程序
  • 手动删除
    /data/data/<appname>/databases
  • 中的相关数据库文件

选择最适合您情况的。

© www.soinside.com 2019 - 2024. All rights reserved.