ORMLite 在向 table 添加列时删除数据

ORMLite dropping data when adding a column to the table

在我的 Android 应用程序中,我使用 ORMLite 将数据存储到本地数据库中,并且在使用 onUpgrade() 方法向该数据库添加列时,我获取了table 被删除。 我正在使用 ORMLite 文档中提到的 upgrade schema 方式:

private static final int DATABASE_VERSION = 10;
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVer, int newVer) {

    try {
        if(oldVer < 10){
            getGuardiansDao().executeRaw("ALTER TABLE `messages` ADD COLUMN updated_by TEXT;");
            getGuardiansDao().executeRaw("ALTER TABLE `messages` ADD COLUMN updated_by_time TEXT;");
        }

        } catch (SQLException e) {
           Log.e(DBManager.class.getName(), "Unable to upgrade database from version " + oldVer + " to new "
                + newVer, e);
        }
}

并在 class 中分配给 table:

@DatabaseTable(tableName = "messages")
public class Message extends Object implements Parcelable{

.
.
.
    @DatabaseField
    private String updatedBy;

    @DatabaseField
    private String updatedByTime;

}

现在执行后,它会删除存储在 table messages 中的所有数据,我不知道为什么会这样。

Now after executing that it erases all the data stored in the table messages and I don't have any clue why that is happening.

当然,您发布的代码不会删除 table 并且 ORMLite 不会自动执行此操作或任何操作。是否有可能由于某种原因调用 onCreate(...) 方法?

有很多方法可以对此进行调试,但您可以在 onUpgrade(...) 方法中使用原始语句记录 table 的内容,以确保正确构建 table。那么你也许可以检测到它何时被清除了。