Почему я переписываю свой файл свойств в файл yaml с тем же содержимым, но затем проект spring выдает ошибку?

#mysql #spring #spring-boot #spring-data-jpa

Вопрос:

Я написал простой весенний проект с spring-data-jpa зависимостью, и он довольно хорошо работал application.properties с приведенным ниже контентом:

 spring.application.name=customer-service
spring.datasource.url=jdbc:mysql://localhost:3306/hat
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
 

Но после того, как я перепишу его в файл yaml application.yaml :

 spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hat
    driver-class-name: com.mysql.cj.jdbc.Driver
    data-username: root
    data-password: 
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: false
 

Мой проект выдает ошибку

 Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 
 

Я так уверен, что поместил эти файлы в нужное место и использовал только по одному за раз.

Разве эти два файла не должны иметь одинаковое содержимое? Я так растеряна…

Комментарии:

1. Похоже, вы не добавили параметр ‘hibernate.dialect’ ни в один из файлов свойств, например : spring.jpa.properties. спящий режим.диалект = тип диалекта ?

2. @DelliKilari, но мой проект хорошо работал с application.properties файлом, и он не работает, даже если я добавлю это в формате yaml в файл yaml.

Ответ №1:

У вас есть пара опечаток в вашем YAML, поэтому файлы не эквивалентны. У вас есть username и password в файле свойств, но data-username и data-password в YAML.

Эта неправильная конфигурация означает, что Hibernate не может подключиться к базе данных для определения диалекта, который он должен использовать. В результате вместо этого потребовалось настроить диалект.

Я верю, что вы можете решить проблему, исправив YAML:

 
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hat
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: false

 

Комментарии:

1. спасибо, похоже, автозаполнение привело меня к неправильному слову😂