2017-09-06 29 views
0

私はDBFlowについて学んでいます。なぜなら、私が今作業しているプロジェクトで、前の人がそれを使うことにしたからです。だからデータベースクラスで私はこれを持っています:Android - 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); 
    } 
    } 
} 

これは以前の移行スクリプトです。だから私はこの同じテーブルに新しい列を追加したいと思います。私はテーブルクラスで必要な変更を行いました(列の追加、セットとメソッドの取得など)。そして、私は自分の変更を受け入れるための新しいスクリプトを書くつもりです。だから私はこのでした:

@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ファイルは、ビルドフォルダの下にあり、彼らは、編集されてはならない。

error: cannot find symbol 
import com.construct.v2.models.Attachment_Table; 

私はタスクモデルと移行スクリプトでは、私は私の変更前の状態()に戻す場合は、コードがうまく動作します。だから、私は何か間違ったことをしているとか、あるステップをスキップしていると思う移行スクリプトを実行するにはどうすればよいですか?他に何が必要ですか?

答えて

0

変更には、新しい移行クラスを追加する必要があります。移行バージョンはDBバージョンと同じである必要があります。また、正しいデータ型を使用しているかどうかを確認してください(あなたのID文字列は?)。

移行については、このガイドを参照してください。https://agrosner.gitbooks.io/dbflow/content/Migrations.html

関連する問題