如何解决室-“预打包的数据库具有无效的架构”-随机要求列不为空
我正在尝试将我的预打包数据库的升级版本与fallbackToDestructiveMigration()
一起使用。我还刚刚将Gradle Room版本升级到2.2.5。
现在,Room错误地重新创建了数据库,因为它完全是空的。在模拟器上手动删除数据后,它从资产中拉出db,但出现模式错误。
使用https://hrankit.github.io/RoomSQLiteDifferenceFinder/,我看到的区别仅在于对列的 some 的notNull
检查:
但是我从来没有首先将它们指定为notNull
:
public class Challenge {
@PrimaryKey(autoGenerate = true)
private int id = 0;
private final String name;
@NonNull
private final ChallengeType type;
private final String summary;
@NonNull
private final String content;
private final String activePartContent;
private final String helpContentWhy;
private final String helpContentHow;
private final String sources;
private boolean isActive;
private int experience;
private int neededAttempts;
public Challenge(String name,@NonNull ChallengeType type,String summary,@NonNull String content,String activePartContent,String helpContentWhy,String helpContentHow,String sources,boolean isActive,int experience,int neededAttempts) {
this.name = name;
this.type = type;
this.summary = summary;
this.content = content;
this.activePartContent = activePartContent;
this.helpContentWhy = helpContentWhy;
this.helpContentHow = helpContentHow;
this.sources = sources;
this.isActive = isActive;
this.experience = experience;
this.neededAttempts = neededAttempts;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@NonNull
public ChallengeType getType() {
return type;
}
@NonNull
public String getContent() {
return content;
}
public String getActivePartContent() {
return activePartContent;
}
public String getHelpContentWhy() {
return helpContentWhy;
}
public String getHelpContentHow() {
return helpContentHow;
}
public boolean isActive() {
return isActive;
}
public String getSummary() {
return summary;
}
public String getSources() {
return sources;
}
public int getExperience() {
return experience;
}
public int getNeededAttempts() {
return neededAttempts;
}
}
所以Roomyyyyy在这烦我。而且我不想在我的数据库文件中将这些值设置为notNull
,因为这没有任何意义。可能还有几乎所有内容都不为空。
除了我记得在尝试迁移之前遇到此问题外,当我尝试将必需的字段设置为notNull时,Room还会找到另一个表来抱怨notNull。这就是为什么我避免这么长时间升级Gradle版本号的原因,因为它似乎源于此。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。