#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. спасибо, похоже, автозаполнение привело меня к неправильному слову😂