Room 不会更新现有的预定义数据库
Posted
技术标签:
【中文标题】Room 不会更新现有的预定义数据库【英文标题】:Room does not update exsisting predefined database 【发布时间】: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 文件复制到资产中之前,我总是保存、关闭和重新打开几次)。 【参考方案1】:发现问题: 我忘记在我的实体类中删除唯一索引。
【讨论】:
以上是关于Room 不会更新现有的预定义数据库的主要内容,如果未能解决你的问题,请参考以下文章