Grails 3 имеет новые файлы конфигурации и формат. Новый формат основан на YAML, а имя файла для конфигурации базы данных — grails-app / conf / application.yml. Я только начинаю работать с Grails 3 после разработки приложений на Grails pre-1, 1 и 2. Я с нетерпением ждал создания нового приложения Grails 3.
Прежде чем начать, я прочитал заметки по обновлению Grails 2 до Grails 3 и чувствовал себя довольно уверенно. Но вчера я столкнулся с проблемой, которую я решил описать здесь, если она вам поможет.
Во-первых, вот рабочий фрагмент application.yml, источник данных которого настроен для mySQL
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
dataSource: pooled: true jmxExport: true # driverClassName: org.h2.Driver driverClassName: com.mysql.jdbc.Driver # dialect: org.hibernate.dialect.MySQL5InnoDBDialect username: root password: root environments: development: dataSource: # dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', '' dbCreate: create url: jdbc:mysql: //localhost/demo?autoReconnect=true |
Но здесь вы должны быть осторожны.
Убедитесь, что вы не используете старый формат <variable_name> = «<setting>» в файлах YAML. Что я имею в виду? Ну, вот пример:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
dataSource: pooled: true jmxExport: true # driverClassName: org.h2.Driver driverClassName: com.mysql.jdbc.Driver # dialect: org.hibernate.dialect.MySQL5InnoDBDialect username: root password: root environments: development: dataSource: # dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', '' dbCreate = "create" url = "jdbc:mysql://localhost/demo?autoReconnect=true" |
У меня была конфигурация источника данных Grails 3 таким образом, и я получал ошибки при запуске приложения grails run:
1
2
|
ERROR org.springframework.boot.SpringApplication - Application startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistenceInterceptor' : Cannot resolve reference to bean 'hibernateDatastore' while setting bean property 'hibernateDatastore' ; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'hibernateDatastore' is defined |
Да, оглядываясь назад, это стыдно. Я потратил больше времени на отладку этого, чем хочу признаться. Так что, на случай, если это кому-нибудь поможет, я записываю это для вас.
Ссылка: | Конфигурация источника данных Grails 3 от нашего партнера по JCG Тодда МакГрата в блоге Supergloo . |