Android 重命名列名时发生SQLITE语法错误代码1

Android 重命名列名时发生SQLITE语法错误代码1,android,sqlite,syntax,migration,rename,Android,Sqlite,Syntax,Migration,Rename,我正在迁移Android应用程序中的房间数据库。这是迁移代码: 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应用程序中的房间数据库。这是迁移代码:

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\u tmp表

CREATE TABLE item_tmp(<column1> <data_type>, itemId <data_type>,.....)
4.重命名项目\u tmp表

ALTER TABLE item_tmp RENAME TO item;

我想我在2018年也看到了同样的问题。我原以为这件事现在已经解决了。有关于手动升级表的提示吗?我已经用20条记录做了一次,这不是一个大问题,但是再做一次会非常乏味,将来会有数百条记录。更新了答案。请注意,这个答案中的操作顺序在中被明确称为不正确。谢谢,@Shawn和user2864740。我已经更新了答案,请验证。是否有一种通用的方法?有些人喜欢我在删除列时看到的情况,如下所示:
DROP TABLE item;
ALTER TABLE item_tmp RENAME TO item;