Я считаю, что ваша проблема в том, что вы используете db.setForeignKeyConstraintsEnabled(true);
слишком поздно, и поэтому поддержка внешнего ключа не включается при вставке строк в методе onCreate .
То естьПорядок: -
- onConfigure
- onCreate
- onOpen
, т. е. при вставке строк, поскольку поддержка внешнего ключа отсутствуетне был включен конфликт внешних ключей, и строка ружья вставлена.
В связи с этим вам нужно вызвать setForeignKeyConstraintsEnabled (true) в onConfigure для поддержки внешнего ключа, который будет доступен в onCreate.
например, добавить следующее в DBClass
@Override
public void onConfigure(SQLiteDatabase db) {
db.setForeignKeyConstraintsEnabled(true);
super.onConfigure(db);
}
Журнал будет содержать (пойман не сбой): -
2019-10-08 08:53:58.788 E/SQLiteDatabase: Error inserting gender_cat=30 age=1 Food=Foods Data(I just remove it
android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)