OdbcException: ОШИБКА [23000] [ma-3.0.3] [5.7.12] Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 30 мая 2018

Я получаю эту ошибку при использовании 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>

Родительские записи вставляются дважды при создании Родителя.

  1. Первая запись, вставляемая в родительскую таблицу во время создания родителя.
  2. Вторая запись с такими же деталями, вставляемая в родительскую таблицу также во время создания дочернего элемента.

Но тот же код работает нормально, когда я использую другие драйверы, такие как MySqlDataDriver.Ошибка просмотра только при использовании MariaDB Connector/ODBC

...