Я получаю эту ошибку при использовании MariaDB Connector/ODBC
с nHibernate
для подключения MySql
базы данных
OdbcException: ОШИБКА [23000] [ma-3.0.3] [5.7.12]Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (database
. ChildTable
, CONSTRAINT FK_ChildTable_ParentTable
FOREIGN KEY (Id
) ССЫЛКИ ParentTable
(Id
))
У нас есть 2 таблицы, родительская и дочерняя.Обе таблицы связаны между собой внешним ключом.Приведенный ниже файл сопоставления nHibernate.
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Xxx.Yyy.Domain" assembly="Xxx.Yyy">
<class name="Xxx.Yyy.Domain.Parent, Xxx.Yyy" table="Parent" lazy="false">
<id name="ParentId" column="ParentId" type="integer">
<generator class="native" />
</id>
<property name="Name" column="Name" type="string" not-null="true"/>
<property name="Description" column="Description" type="string" not-null="false"/>
</class>
<class name="Xxx.Yyy.Domain.Child, Xxx.Yyy" table="Child" lazy="false">
<id name="ChildId" column="ChildId" type="integer">
<generator class="native" />
</id>
<many-to-one name="Parent" not-null="true" column="ParentId" class="Xxx.Yyy.Domain.Parent, Xxx.Yyy" cascade="save-update" lazy="proxy" />
<property name="Name" column="Name" type="string" not-null="true"/>
<property name="Description" column="Description" type="string" not-null="false"/>
</class>
Родительские записи вставляются дважды при создании Родителя.
- Первая запись, вставляемая в родительскую таблицу во время создания родителя.
- Вторая запись с такими же деталями, вставляемая в родительскую таблицу также во время создания дочернего элемента.
Но тот же код работает нормально, когда я использую другие драйверы, такие как MySqlDataDriver
.Ошибка просмотра только при использовании MariaDB Connector/ODBC