重命名列名时,SQLITE语法错误代码1

问题描述 投票:1回答:1

我正在迁移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
android sqlite syntax migration rename
1个回答
2
投票

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;
© www.soinside.com 2019 - 2024. All rights reserved.