onl*_*ise 2 migration sqlite syntax android rename
我正在我的 Android 应用程序中迁移 Room 数据库。这是迁移代码:
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE item RENAME itemInfoId TO itemId");
}
};
Run Code Online (Sandbox Code Playgroud)
错误信息
android.database.sqlite.SQLiteException: near "itemInfoId": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME itemInfoId TO itemId
Run Code Online (Sandbox Code Playgroud)
我也试过 SQL "ALTER TABLE item RENAME COLUMN itemInfoId TO itemId",同样的错误
android.database.sqlite.SQLiteException: near "COLUMN": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME COLUMN itemInfoId TO itemId
Run Code Online (Sandbox Code Playgroud)
重命名关键字在 SQLite 3.25 版中可用,但不适用于最新的 android 版本。您将不得不手动升级表
1.使用正确的列值 itemId 创建 item_tmp 表
CREATE TABLE item_tmp(<column1> <data_type>, itemId <data_type>,.....)
Run Code Online (Sandbox Code Playgroud)
2.从item复制数据到item_tmp
INSERT INTO item(<column1>, <column2>,..)
SELECT <column1>, <column1>, ...
FROM item_tmp;
Run Code Online (Sandbox Code Playgroud)
3.删除表项
DROP TABLE item;
Run Code Online (Sandbox Code Playgroud)
4.重命名item_tmp表
ALTER TABLE item_tmp RENAME TO item;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |