2016-03-30 9 views
1
という名前のカラムがありません

私のテーブルのTareasにデータを挿入しようとしています。私はORM(GreenDao)を使用しています。しかし、私のアプリを実行すると、log catはTareasという名前のテーブルが存在しないことを示しています。データベースを作成したとき、TareasテーブルにはTipoという名前の列があるため、これはわかりません。GreenDao- android.database.sqlite.SQLiteException:テーブルTAREASには、

3月30日07:51:32.758 29389から29389/E/AndroidRuntime tipiwiny.greendao:致命的な例外:メインプロセス:tipiwiny.greendao、PID:29389 android.database.sqlite.SQLiteException:表TAREASなしを有しますコラムTIPO(コード1)と命名

:、コンパイル中:INSERT INTO TAREASを ( '_id'、 'DURACION'、 'TIPO'、 'DESCRIPCION'、 'USUARIO'、 'REALIZADA')は( 値、? ?、?、?、?、?) android.database.sqlite.SQLiteConnection.nativePrepareStatement(ネイティブ メソッド) android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) でandroid.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) でandroid.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)android.database.sqlite.SQLiteProgramで 。(SQLiteProgram .java:58) でandroid.database.sqlite.SQLiteStatement(SQLiteStatement.java:31) でandroid.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:994) de.greenrobot.daoで.internal.TableStatements.getInsertStatement(TableStatements.java:48) at de.greenrobot.dao.AbstractD tipiwiny.greendao.CrearTareaでtipiwiny.greendao.CrearTarea.access $ 000(CrearTarea.java:18)でtipiwiny.greendao.CrearTarea.añadirTarea(CrearTarea.java:60) でao.insert(AbstractDao.java:293) $ 1.onClick(CrearTarea.java:42) android.view.View.performClick(View.java:4756) (android.view.View)$ PerformClick.run(View.java:19749) (android.os)で、 Handler.handleCallback(Handler.java:739) (andler.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) android.app.ActivityThreadにあります。 main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:372) atcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。あなたが生成するには、このコードを実行すると

private static void createDatabase(Schema schema) { 
    Entity usuario = schema.addEntity("Usuario"); 
    usuario.addIdProperty(); 
    usuario.addStringProperty("nombre").notNull(); 
    usuario.addStringProperty("apellidos").notNull(); 
    usuario.addStringProperty("password").notNull(); 
    usuario.addStringProperty("roll").notNull(); 

    Entity habilidad = schema.addEntity("Habilidad"); 
    habilidad.addIdProperty(); 
    Property usuarioIdProperty = habilidad.addLongProperty("usuarioId").notNull().getProperty(); 
    habilidad.addToOne(usuario, usuarioIdProperty); 
    habilidad.addIntProperty("tipo").notNull(); 

    Entity tarea=schema.addEntity("Tareas"); 
    tarea.addIdProperty(); 

    tarea.addIntProperty("duracion").notNull(); 
    tarea.addIntProperty("tipo").notNull(); 
    tarea.addStringProperty("descripcion").notNull(); 
    tarea.addStringProperty("usuario"); 
    tarea.addBooleanProperty("realizada"); 


} 

ます。java:私のデータベースがどのように定義されてcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

で899) テーブル、クラスTareasDaoが作成され、メソッドcreateTableは次のとおりです。

/** Creates the underlying database table. */ 
public static void createTable(SQLiteDatabase db, boolean ifNotExists) { 
    String constraint = ifNotExists? "IF NOT EXISTS ": ""; 
    db.execSQL("CREATE TABLE " + constraint + "'TAREAS' (" + // 
      "'_id' INTEGER PRIMARY KEY ," + // 0: id 
      "'DURACION' INTEGER NOT NULL ," + // 1: duracion 
      "'TIPO' INTEGER NOT NULL ," + // 2: tipo 
      "'DESCRIPCION' TEXT NOT NULL ," + // 3: descripcion 
      "'USUARIO' TEXT," + // 4: usuario 
      "'REALIZADA' INTEGER);"); // 5: realizada 
} 

答えて

3

アプリをアンインストールしてから再インストールしてください。

詳細:

は、一つの可能​​な理由は、あなたが最初のテーブルを作成したこと、移行を実行し、後でフィールドを追加することができます。

だから、2つの解決策があるかもしれない: -

1:は、お使いの携帯電話(アンインストール)からアプリを削除し、それはそれですべてのテーブルを削除します。その後、再インストールするとすべてのテーブルが再作成されます。

2: DaoMasterのonUpdateメソッドを変更してすべてのテーブルを削除し、再作成します。

/** WARNING: Drops all table on Upgrade! Use only during development. */ 
public static class DevOpenHelper extends OpenHelper { 
    public DevOpenHelper(Context context, String name, CursorFactory factory) { 
     super(context, name, factory); 
     Log.i("greenDAO", "DevOpenHelper: constructor called"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); 
     //Remember to remove this line before moving to production. 
     dropAllTables(db,true); 
     onCreate(db); 
    } 
} 

何か助けが必要な場合は、私に教えてください:)

+1

ありがとう!私は私の問題を解決しました。私は自分の携帯電話からアプリケーションを削除した後、Android Device Monitorからデータベースを削除した。最後に、私はデータベース – tipiwiny

+0

を生成するために戻ってあなたの解決策を共有してください!あなたはどうしたの? –

+0

申し訳ありませんが、私は自分のコメントを編集しました。 – tipiwiny