Обновление схемы Spring Hibernate не работает со знаком минус в имени базы данных - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть приложение Spring Boot

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

и hibernate настроен для доступа к базе данных в application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/banquets-booking?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# this not helps as puts in quotes table field name only
#spring.jpa.properties.hibernate.globally_quoted_identifiers=true

#update validate create create-delete
spring.jpa.hibernate.ddl-auto=update

Теперь я добавил новое поле к сущности, но обновление не удалось:

2018-09-03 13:05:34.893 TRACE 20867 --- [  restartedMain] org.hibernate.type.TypeFactory           : Scoping types to session factory org.hibernate.internal.SessionFactoryImpl@56922754
Hibernate: 

    alter table banquets-booking.sub_event 
       add column outlet_id bigint
2018-09-03 13:05:35.841  WARN 20867 --- [  restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

Это похоже на ошибку, потому что Hibernate изначально смог сгенерировать схему, но при обновлении произошел сбой.

Как я могу решить эту проблему, не переименовывая базу данных?

1 Ответ

0 голосов
/ 03 сентября 2018

Эта проблема не из-за знака минус.

Вы должны попытаться добавить диалекты, подобные одной из следующих строк. Диалект SQL позволяет Hibernate генерировать лучший SQL для выбранной базы данных

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

OR

spring.jpa.properties.hibernate.dialect =org.hibernate.dialect.MySQLMyISAMDialect 

OR

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLInnoDBDialect 

чтобы увидеть, какой из них работает для вас.

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