我正在迁移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");
}
};
错误消息
android.database.sqlite.SQLiteException: near "itemInfoId": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME itemInfoId TO itemId
我也尝试过"ALTER TABLE item RENAME COLUMN itemInfoId TO itemId"
的SQL,同样的错误
android.database.sqlite.SQLiteException: near "COLUMN": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME COLUMN itemInfoId TO itemId
Rename关键字在SQLite 3.25版中可用,而在最新的android版本中不可用。您将必须手动升级表
1。使用正确的列值itemId创建item_tmp表
CREATE TABLE item_tmp(<coloumn1> <data_type>, itemId <data_type>,.....)
2。将数据从项目复制到item_tmp
INSERT INTO item(<coloumn1>, <coloumn2>,..) SELECT <coloumn1>, <coloumn1>, ... FROM item_tmp;
3.Drop table项目
DROP TABLE item;
4。重命名item_tmp表
ALTER TABLE item_tmp RENAME TO item;