- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试重命名我的 Room 数据库中的列。我傻傻的用了列名index
,想改成id
,但是这个迁移函数很头疼:
static final Migration MIGRATION_2_3 = new Migration(2, 3) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE items RENAME COLUMN index TO id;");
}
};
我按照以下语法图进行查询:
Android Studio 给我错误 TO expected, got 'COLUMN'
,由于 RuntimeException,我无法使用数据库:
Caused by: java.lang.IllegalStateException: 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.
版本号是正确的,所以我假设这个问题是由上面的语法问题引起的;我的设置找不到任何其他问题。
最佳答案
Android 使用 SQLite v3.19。这使得无法使用 RENAME COLUMN 重命名列。最好的方法是重新创建表。 – Leo Pelozo
看来我需要创建删除表格的函数,这样我才能创建一个新表格。
@Query("DELETE FROM items")
void dropTable();
...然后再次创建表,但我不确定如何去做。
更新:
我能够(我想,我们会看到...)通过调用上述函数重新创建表,删除所有迁移并将数据库版本设置回 1。然后我重新定义了数据库类本身具有专有名称等,并且能够毫无错误地将数据插入其中。添加 .fallbackToDestructiveMigration()
到我的数据库单例类也是必要的。
我个人认为仅仅重命名一个列有点荒谬;我永远无法简单地重命名列并为更改添加迁移,也无法删除表并使用正确的列名重新创建它并将其添加为迁移。但是,唉,这毕竟是 Android。
关于Android Room,SQLite - 出乎意料,得到了 'COLUMN',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839661/
一直在断断续续做一个项目,2个月没碰了,今天回来,报错无法运行。 IEnumerable query = mediaTitleCollection.OfType(); 调试器在此行停止并给出标题中描述
我最近读了一篇 article关于生成变更日志,我想将其集成到 package.json 脚本中。 我用正确的项目名称稍微更改了文章中的脚本,并将输出导出到 CHANGELOG.md "script
我添加了这段代码,现在我得到了一个意想不到的标记";"错误。 代码: var i = 0; var tabs = ""; while(i "+ idArray[i] +" &nbs
@echo off for /f "tokens=1,2 delims=," %%x in (my.csv) do ( if %M% LSS %%x set M=%%x ) echo Max X Va
我正在尝试重命名我的 Room 数据库中的列。我傻傻的用了列名index,想改成id,但是这个迁移函数很头疼: static final Migration MIGRATION_2_3 = new M
我不确定这是否是一个错误。代码编译得很好(没有警告),但是当我输入一个方法时,本地值(NSMutableString)会在调试器中显示以下内容: __NSAutoreleaseFreedObject(
这个问题在这里已经有了答案: Synchronous/Asynchronous behaviour of python Pipes (1 个回答) 关闭4个月前。 我正在做一个从 udp 套接字接收样
我是一名优秀的程序员,十分优秀!