Я имею дело с БД комнаты, которая имеет несколько сущностей, которые связаны с родительской таблицей с помощью внешних ключей с соответствующими именами столбцов соответственно. Основная цель, для которой я использовал здесь внешние ключи, — связать соответствующие данные в родительской таблице с дочерними таблицами.
Но проблема в том, что я не получаю ограничение FOREIGN KEY (код 787 SQLITE_CONSTRAINT_FOREIGNKEY). Насколько я исследовал это, эта ошибка возникает, когда есть неправильное имя (в именах столбцов для родительского или дочернего элемента) или отсутствуют имена столбцов в соответствующей родительской или дочерней таблице, но в моем случае ничего подобного нет;
@Query("SELECT * FROM information_data WHERE is_linked_with_imp_collections=1 AND key_of_imp_linked_collection=:key")
fun getThisFolderData(key: String): Flow[*]>
Когда я пытаюсь вставить в них данные с соответствующими данными, выдается такая ошибка:
android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY)
at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:967)
at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:89)
at androidx.sqlite.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.kt:42)
at androidx.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.kt:52)
at com.sample.example.localDB.LocalDBDao_Impl$14.call(LocalDBDao_Impl.java:282)
at com.sample.example.localDB.LocalDBDao_Impl$14.call(LocalDBDao_Impl.java:277)
at androidx.room.CoroutinesRoom$Companion$execute$2.invokeSuspend(CoroutinesRoom.kt:65)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at androidx.room.TransactionExecutor.execute$lambda$1$lambda$0(TransactionExecutor.kt:36)
at androidx.room.TransactionExecutor.$r8$lambda$AympDHYBb78s7_N_9gRsXF0sHiw(Unknown Source:0)
at androidx.room.TransactionExecutor$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Я уже видел ответы на соответствующие вопросы, но они не отвечают в моем конкретном случае; Как я могу это исправить? Спасибо )
Я имею дело с БД комнаты, которая имеет несколько сущностей, которые связаны с родительской таблицей с помощью внешних ключей с соответствующими именами столбцов соответственно. Основная цель, для которой я использовал здесь внешние ключи, — связать соответствующие данные в родительской таблице с дочерними таблицами. Но проблема в том, что я не получаю ограничение FOREIGN KEY (код 787 SQLITE_CONSTRAINT_FOREIGNKEY). Насколько я исследовал это, эта ошибка возникает, когда есть неправильное имя (в именах столбцов для родительского или дочернего элемента) или отсутствуют имена столбцов в соответствующей родительской или дочерней таблице, но в моем случае ничего подобного нет; [b][code]Tables[/code][/b]: [code]@Entity( tableName = "information_data", foreignKeys = [ ForeignKey( entity = CollectionData::class, parentColumns = ["collection_name"], childColumns = ["key_of_linked_collection"], onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE ), ForeignKey( entity = ImportantInformationData::class, parentColumns = ["heading"], childColumns = ["key_of_imp_linked_collection"], onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE ), ForeignKey( entity = ArchivedInformationData::class, parentColumns = ["heading"], childColumns = ["key_of_archived_linked_collection"], onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE ), ] ) data class InformationData( @PrimaryKey val heading: String, val location: String, val base_url: String, val image_url: String,
val is_linked_with_collections: Boolean, val key_of_linked_collection: String,
val is_linked_with_imp_collections: Boolean, val key_of_imp_linked_collection: String,
val is_linked_with_archived_collections: Boolean, val key_of_archived_linked_collection: String, )
@Entity(tableName = "collection_data") data class CollectionData( @PrimaryKey val collection_name: String, val info_for_saving: String, )
@Entity(tableName = "archived_information_data") data class ArchivedInformationData( @PrimaryKey val heading: String, val location: String, val base_url: String, val image_url: String, val info_for_saving: String, )
@Entity(tableName = "important_information_data") data class ImportantInformationData( @PrimaryKey var heading: String, var location: String, var base_url: String, var image_url: String, var info_for_saving: String, ) [/code] [code]@Dao[/code] [list] [*]Для вставки данных:- [/list] [code] @Insert suspend fun addANewInfo(infoData: InformationData) [/code] [list] [*]если я хочу получить какие-либо данные, я просто использую запросы: [/list] [code]@Query("SELECT * FROM information_data WHERE is_linked_with_imp_collections=1 AND key_of_imp_linked_collection=:key") fun getThisFolderData(key: String): Flow[*]> [/code] [list] Когда я пытаюсь вставить в них данные с соответствующими данными, выдается такая ошибка: [/list] [code]android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed (code 787 SQLITE_CONSTRAINT_FOREIGNKEY) at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:967) at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790) at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:89) at androidx.sqlite.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.kt:42) at androidx.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.kt:52) at com.sample.example.localDB.LocalDBDao_Impl$14.call(LocalDBDao_Impl.java:282) at com.sample.example.localDB.LocalDBDao_Impl$14.call(LocalDBDao_Impl.java:277) at androidx.room.CoroutinesRoom$Companion$execute$2.invokeSuspend(CoroutinesRoom.kt:65) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at androidx.room.TransactionExecutor.execute$lambda$1$lambda$0(TransactionExecutor.kt:36) at androidx.room.TransactionExecutor.$r8$lambda$AympDHYBb78s7_N_9gRsXF0sHiw(Unknown Source:0) at androidx.room.TransactionExecutor$$ExternalSyntheticLambda0.run(Unknown Source:4) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) [/code] [list] [*]Я уже видел ответы на соответствующие вопросы, но они не отвечают в моем конкретном случае; Как я могу это исправить? Спасибо :)) [/list]
Я создал приложение API Crud Restful с использованием загрузки Java/Spring. У меня есть MariaDB со списком сотрудников и соответствующие данные внутри. Я использую MySQL Workbench в качестве моего SQL Client. Нет...
Я работаю над проектом Django, в котором пользователи могут размещать заказы, и сталкиваюсь с ошибкой IntegrityError, связанной с ограничением внешнего ключа.
Ошибка:
IntegrityError at /payment_getway/
FOREIGN KEY constraint failed
У меня есть приложение для Android, работающее на слегка модифицированной версии Android 10. Приложение сохраняет данные в базе данных Room.
Недавно внутренний сервер зарегистрировал 40 случаев частичной потери данных. где как новые вставленные...
мне нужно мое приложение,
запросы в магазине приложений для Android
у меня есть тесты для проверки базы данных моей комнаты, у меня проблема с одним тестом.
тест утверждает, что при вставке очень старых запросов срабатывает триггер для их удаления....