我正在尝试了解 DBFlow,因为在我现在正在工作的项目中,以前的人决定使用它。所以在数据库类中我有这个:
@Database(name = ConstructDB.NAME, version = ConstructDB.VERSION)
public class ConstructDB {
public static final String NAME = "construct_v3";
public static final int VERSION = 18;
@Migration(version = 17, database = ConstructDB.class)
public static class Migration17 extends AlterTableMigration<Task> {
public Migration17(Class<Task> table) {
super(table);
}
@Override
public void onPreMigrate() {
super.onPreMigrate();
addColumn(SQLiteType.INTEGER, NAMES.DB.READ_COUNT);
}
}
}
这是以前的迁移脚本。所以现在我想在同一个表中添加一个新列。我在表类中进行了必要的更改(例如添加列、set 和 get 方法等)。我想编写一个新脚本来接受我的更改。所以我这样做了:
@Database(name = ConstructDB.NAME, version = ConstructDB.VERSION)
public class ConstructDB {
public static final String NAME = "construct_v3";
public static final int VERSION = 19;
@Migration(version = 18, database = ConstructDB.class)
public static class Migration18 extends AlterTableMigration<Task> {
public Migration18(Class<Task> table) {
super(table);
}
@Override
public void onPreMigrate() {
super.onPreMigrate();
addColumn(SQLiteType.TEXT, NAMES.DB.CATEGORY_ID);
}
}
}
但是当我运行该项目时,我会遇到很多错误,例如:
error: cannot find symbol
import com.construct.v2.dagger.DaggerConstructComponent;
而且大多是这样的错误(something_table,这是我数据库中的所有表。这个 _table 文件在 build 文件夹下,它们不能被编辑):
error: cannot find symbol
import com.construct.v2.models.Attachment_Table;
如果我返回到更改之前的状态(在任务模型和迁移脚本中),代码运行得很好。所以我认为我做错了什么或跳过了一些步骤。如何运行迁移脚本?我还需要进行哪些其他更改?