【问题标题】:Room does not update exsisting predefined databaseRoom 不会更新现有的预定义数据库
【发布时间】:2021-10-25 01:49:02
【问题描述】:

我有一个简单的表格:

CREATE TABLE "Driver" (
"id"    INTEGER NOT NULL,
"firstName" TEXT NOT NULL,
"lastName"  TEXT NOT NULL,
"driverName"    TEXT NOT NULL UNIQUE,
"birthDate" INTEGER,
"drivingLicNum" TEXT,
"drivingLicExpDate" INTEGER,
"issuingAuthority"  TEXT,
"licCategory"   TEXT,
"isActive"  INTEGER NOT NULL DEFAULT 1 CHECK("isActive" IN (0, 1)),
"profilePic"    TEXT,
PRIMARY KEY("id" AUTOINCREMENT)
);

我使用创建数据库的代码:

Room.databaseBuilder(context, VehicleexDatabase.class, "myprefdefdb.db").fallbackToDestructiveMigration()
                .createFromAsset("databases/myprefdefdb.db").build();

问题是我一个“drivingLicNum”的唯一列,但是我认为这是不必要的,我决定从我的预定义数据库中删除该列,卸载应用程序,并使用新的预定义数据库启动新应用程序。

但是,即使我删除了 UNIQUE 语句,我仍然收到“drivingLicNum”列存在唯一约束的问题。我错过了什么吗?

【问题讨论】:

  • 你能更具体地谈谈这个问题吗?例如包括堆栈/跟踪日志。您是否确保使用更改后的数据库更改了资产(在将 db 文件复制到资产中之前,我总是保存、关闭和重新打开几次)。

标签: android sqlite rx-java android-room database-migration


【解决方案1】:

发现问题: 我忘记在我的实体类中删除唯一索引。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多