JHipster and database connection
I am using JHipster and when I run sudo mvn liquibase:diff
I get the following error
[INFO] Settings
----------------------------
[INFO] driver: org.postgresql.Driver
[INFO] url: jdbc:postgresql://localhost/gastos8
[INFO] username: gastos8
[INFO] password: *****
[INFO] use empty password: false
[INFO] properties file: null
[INFO] properties file will override? false
[INFO] prompt on non-local database? true
[INFO] clear checksums? false
[INFO] changeLogFile: src/main/resources/config/liquibase/master.xml
[INFO] context(s): null
[INFO] label(s): null
[INFO] referenceDriver: null
[INFO] referenceUrl: hibernate:spring:com.cboujon.domain?dialect=org.hibernate.dialect.PostgreSQL82Dialect
[INFO] referenceUsername: null
[INFO] referencePassword: null
[INFO] referenceDefaultSchema: null
[INFO] diffChangeLogFile: src/main/resources/config/liquibase/changelog/20150807132702_changelog.xml
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.554s
[INFO] Finished at: Fri Aug 07 13:27:12 ART 2015
[INFO] Final Memory: 18M/179M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.3.2:diff (default-cli) on project gastos8: Error setting up or running Liquibase: liquibase.exception.DatabaseException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "gastos8" -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
I don’t know why [INFO] username: gastos8
.
This is my config file:
dev.yml applications
spring:
profiles:
active: dev
datasource:
dataSourceClassName: org.postgresql.ds.PGSimpleDataSource
url:
databaseName: gastos8
serverName: localhost
username: postgres
password: ---
jpa:
database-platform: org.hibernate.dialect.PostgreSQL9Dialect
database: POSTGRESQL
openInView: false
show_sql: true
generate-ddl: false
hibernate:
ddl-auto: none
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
properties:
hibernate.cache.use_second_level_cache: true
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: true
hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
What am I doing wrong?
source to share
In src / main / resources / config / application-dev.yml file
datasource:
driver-class-name: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
url: jdbc:mysql://localhost:3306/DBNAME?useUnicode=true characterEncoding=utf8
name: DBNAME
username: USERNAME
password: PWD
You must change:
DBNAME
USERNAME
PWD
Don't forget to change production
src/main/resources/config/application-prod
and localhost
in url: jdbc: mysql: // localhost
: 3306 to your url
source to share
As the accepted answer says, maven doesn't read application.yml.
But if you are not comfortable with having the database configuration in your maven liquibase plugin definition, you can use maven properties and liquibase config file.
1 - In your liquibase-maven-plugin
add propertyFile
liquibase-maven-plugin
:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<configuration>
<propertyFileWillOverride>true</propertyFileWillOverride>
<propertyFile>src/main/resources/liquibase.properties</propertyFile>
</configuration>
(...)
</plugin>
2 - Create liquibase properties files anywhere in src / main / resources directory. For example src / main / resources / config / liquibase:
contexts:${liquibase.contexts}
changeLogFile:src/main/resources/config/liquibase/master.xml
driver:${dataSource.project.driverClass}
url:${dataSource.project.jdbcURL}
username:${dataSource.project.user}
password:${dataSource.project.password}
verbose:true
dropFirst:false
3 - Tell maven to filter your liquibase properties files to replace the values with maven properties. The <build>
ask maven filter your configuration file liquibase:
<build>
<resources>
<resource>
<directory>src/main/resources/config/liquibase</directory>
<filtering>true</filtering>
</resource>
</resources>
(...)
</build>
4 - Add maven properties for each profile allowed to run targets in liquid.
<profile>
<id>dev</id>
(...)
<properties>
<liquibase.contexts></liquibase.contexts>
<dataSource.project.driverClass>org.mariadb.jdbc.Driver</dataSource.project.driverClass>
<dataSource.project.jdbcURL>jdbc:mariadb://localhost:3306/yourDatabaseName</dataSource.project.jdbcURL>
<dataSource.project.user>${datasource.username}</dataSource.project.user>
<dataSource.project.password>${datasource.password}</dataSource.project.password>
</properties>
</profile>
5 - Run liquibase targets with maven and set credentials on command line:
mvn resources:resources liquibase:update -Pdev -Ddatasource.username=root -Ddatasource.password=root
Source: Liquibase Maven Documentation
source to share