とありがとうございます! 外部キーを持つテーブルに挿入しようとすると、エラーが発生することがあります。値は存在し、同じタイプであり、ヌルではありません...そして、より面白いのは、初めて失敗し、最初のものだけです!他のインサートは完全に機能します! insertとrepeatを削除しようとしましたが、エラーは再びスローされません...初めての場合のみ! 私はAndroid 2.2(Froyo)でこれを試しています。以前は2.1で外部キーを使用していませんでした。SQLiteエラーandroid:データベース上のInsertでの外部キーの不一致
申し訳ありませんが、大きな「メッセージ」がありますが、私は迷っています!
エラー:
03-30 16:59:56.333: E/AndroidRuntime(28007): android.database.sqlite.SQLiteException: foreign key mismatch: , while compiling: INSERT INTO productoslista(idProducto, idUnidad, comprado, idLista, comentario, cantidad) VALUES(?, ?, ?, ?, ?, ?);
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)
03-30 16:59:56.333: E/AndroidRuntime(28007): at android.database.sqlite.SQLiteDatabase.insertOrThrow(SQLiteDatabase.java:1432)
テーブル:
CREATE TABLE [ProductosLista] (
[idLista] INTEGER NOT NULL,
[idProducto] INTEGER NOT NULL,
[cantidad] INTEGER NOT NULL,
[idUnidad] INTEGER NOT NULL,
[comprado] INTEGER NOT NULL,
[comentario] TEXT,
PRIMARY KEY ([idLista],[idProducto],[comentario]),
FOREIGN KEY (idLista) REFERENCES Listas(idLista),
FOREIGN KEY (idProducto) REFERENCES Productos(idProducto),
FOREIGN KEY (idUnidad) REFERENCES Unidades(idUnidad)
CREATE TABLE [Listas] (
[idLista] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[descripcion] TEXT UNIQUE NOT NULL,
[fechaCreacion] INTEGER NOT NULL,
[visible] TEXT NOT NULL,
[estadoCompra] INTEGER NOT NULL
);
CREATE TABLE [Unidades] (
[idUnidad] INTEGER NOT NULL,
[idIdioma] INTEGER NOT NULL,
[abreviatura] TEXT NOT NULL,
[descripcion] TEXT NOT NULL,
--PRIMARY KEY ([idUnidad],[idIdioma]),
FOREIGN KEY (idIdioma) REFERENCES Idiomas(idIdioma)
);
CREATE TABLE [Productos] (
[idProducto] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[idPadre] INTEGER NOT NULL,
[idCategoria] INTEGER NOT NULL,
[idTipoAlimentacion] INTEGER NOT NULL,
[eliminado] INTEGER NOT NULL,
[imagen] INTEGER,
FOREIGN KEY (idPadre) REFERENCES Productos(idProducto),
FOREIGN KEY (idCategoria) REFERENCES Categorias(idCategoria)
);
なぜFOREIGN KEY(idPadre)参照Productos(idProducto)、 'CREATE TABLE [Productos]' ?? – GAMA
問題が見つかりました。申し訳ありませんが遅すぎます!私は新しい答えでそれを怒らせた。 – user675319
あなた自身の答えを受け入れなさい... – GAMA