How to configure PostgreSQL using Grails 3.0?

I am using IntelliJ IDEA 15.0.2 as an IDE. I created a Grails 3.0 application and modified it a bit to customize PostgreSQL.

Here is my data source:

dataSource: pooled: true jmxExport: true driverClassName: org.postgresql.Driver username: postgres password: root environments: development: dataSource: dbCreate: update url: jdbc:postgresql://localhost:5432/trace_db test: dataSource: dbCreate: update url: jdbc:postgresql://localhost:5432/trace_db production: dataSource: dbCreate: update url: jdbc:postgresql://localhost:5432/trace_db properties: jmxEnabled: true initialSize: 5 maxActive: 50 minIdle: 5 maxIdle: 25 maxWait: 10000 maxAge: 600000 timeBetweenEvictionRunsMillis: 5000 minEvictableIdleTimeMillis: 60000 validationQuery: SELECT 1 validationQueryTimeout: 3 validationInterval: 15000 testOnBorrow: true testWhileIdle: true testOnReturn: false jdbcInterceptors: ConnectionState defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED 

And in my build.gradle I added runtime "postgresql:postgresql:9.4-1207.jdbc4" .

But this leads to startup errors:

 ERROR org.apache.tomcat.jdbc.pool.ConnectionPool - Unable to create initial connections of pool. java.sql.SQLException: org.postgresql.Driver 

What did I miss?

+5
source share
4 answers

Data source

 dataSource { pooled = true jmxExport = true driverClassName = "org.postgresql.Driver" username = "postgres" password = "xxx" 

Assembly configuration

 dependencies { // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg // runtime 'mysql:mysql-connector-java:5.1.29' // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41' runtime "org.postgresql:postgresql:9.4.1208.jre7" test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4" } 

Change the jre number according to your db numbe psql version. Hope I helped. Hooray!

+4
source

It looks like your configuration is missing a tab

 dataSource: pooled: true jmxExport: true driverClassName: org.postgresql.Driver username: postgres password: root 

All that is required after the data source must be indented.

+1
source

Launch the Grails application using grails run-app instead of launching it through IntelliJ. I had this problem with MySQL .

I still haven't figured out how to work with IntelliJ correctly, but at least it works when you use the Grails console!

Note. It is assumed that the JDBC driver is already installed correctly. I had a good setup for MySQL and kept digging, thinking that I would somehow change it.

0
source

I donโ€™t know if it was answered, but I found that using application.yml does not give me access to the data source configuration, instead it accepted the H2 driver.

build.gradle (dependency block only):

 compile "org.springframework.boot:spring-boot-starter-logging" compile "org.springframework.boot:spring-boot-autoconfigure" compile "org.grails:grails-core" compile "org.springframework.boot:spring-boot-starter-actuator" compile "org.springframework.boot:spring-boot-starter-tomcat" compile "org.grails:grails-dependencies" compile "org.grails:grails-web-boot" compile "org.grails.plugins:cache" compile "org.grails.plugins:scaffolding" compile "org.grails.plugins:hibernate4" compile "org.hibernate:hibernate-ehcache" runtime "postgresql:postgresql:9.4.1208-atlassian-hosted" compile "org.grails.plugins:spring-security-core:3.0.4" console "org.grails:grails-console" profile "org.grails.profiles:web:3.1.6" runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.8.2" testCompile "org.grails:grails-plugin-testing" testCompile "org.grails.plugins:geb" testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1" testRuntime "net.sourceforge.htmlunit:htmlunit:2.18" 

Removed everything related to the database from application.yml, and application.groovy is used instead:

 dataSource{ pooled= true jmxExport=true driverClassName= 'org.postgresql.Driver' username= 'xxxx' password= 'xxxx' } environments{ development{ dataSource{ dbCreate= 'create-drop' url= "jdbc:postgresql://localhost:5432/xxx" logSql= true hibernate.default_schema= "template_dm" } } test{ dataSource{ dbCreate= 'create-drop' url= "jdbc:postgresql://localhost:5432/xxx" logSql= true hibernate.default_schema= "template_dm" } } production{ dataSource{ dbCreate= 'create-drop' url= "jdbc:postgresql://localhost:5432/xxx" logSql= true hibernate.default_schema= "template_dm" } } } 

Hope this helps everyone with the same issue.

Greetings

0
source

Source: https://habr.com/ru/post/1240716/


All Articles