Сбой hibernate hbm2ddl (ddl-auto) после обновления весенней загрузки 1.3.2 до 1.4.1 - PullRequest
0 голосов
/ 14 ноября 2018

Я обновлял свою весеннюю загрузку с 1.3.2 до 1.4.1 и столкнулся с этой проблемой.

Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Cannot add or update a child row: a foreign key constraint fails (`miq`.`#sql-66f_2a0`, CONSTRAINT `FK8py7anxsihgwdy7bkibosch86` FOREIGN KEY (`market_region_id`) REFERENCES `market_region` (`id`))
Query is : alter table miq.office add constraint FK8py7anxsihgwdy7bkibosch86 foreign key (market_region_id) references miq.market_region (id)
    at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:939) ~[mariadb-java-client-1.4.6.jar!/:na]

В весенней загрузке 1.3.2 работает нормально.Я думаю, что это как-то связано с обновлением hibernate с 4 до 5. Мой application.yml ниже:

spring:
  application:
    name: miq-batch
  datasource:
    url: jdbc:mysql://localhost:3306/scdf
    username: root
    password: root
    driverClassName: org.mariadb.jdbc.Driver
    testOnBorrow: true
    validationQuery: SELECT 1
    hikari:
      pool-name: SpringBootHikariCP
  data:
    mongodb:
      host: localhost
      port: 27017
      database: profile      
  jpa:
    hibernate:
      ddl-auto: update
      show_sql: true
    properties:
      hibernate:
        hbm2ddl:
          auto: update
        cache:
          use_second_level_cache: true
          region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
          use_query_cache: true
          use_collection_cache: true

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

удалось решить эту проблему, добавив:

hibernate:
    implicit_naming_strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
0 голосов
/ 14 ноября 2018

Похоже, MariaDB не позволяет создать ограничение внешнего ключа для таблицы miq.office. Таким образом, это проблема с данными. Посмотрите в таблице miq.office, чтобы увидеть, есть ли у одной (или нескольких) записей неизвестные market_region_id (то есть, у которых нет соответствующей записи в таблице market_region).

Почему происходит обновление? Я полагаю, что когда вы обновляете Spring-boot, вы также обновляете драйвер MariaDB, и этот последний более строг в отношении создания внешних ограничений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...