During the weekend I've been programming some small project to get me entertained and I have encountered a bug I cannot fix.
This is a small java app.
This is my docker compose:
version: '3.8'
services:
postgres:
image: postgres:14
container_name: postgres
environment:
POSTGRES_DB: database
POSTGRES_USER: root
POSTGRES_PASSWORD: root
ports:
- "5432:5432"
app:
container_name: app
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
depends_on:
- postgres
And this is my application.properties file:
spring.datasource.url=jdbc:postgresql://postgres:5432/database
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
And once I ran the docker-compose up
command it says that cannot connect to the database because does not recognize the Host. I even try to run first the database in separate but the same error appears.
I will post the logs below:
2.00 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.
class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution [The connection attempt failed.] [n/a]
32.00 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
32.00 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
32.00 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
32.00 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
32.00 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
32.00 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
32.00 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
32.00 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1155)
32.00 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
32.00 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
32.00 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
32.00 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436)
32.00 at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
32.00 at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)
32.00 at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
32.00 at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
32.00 at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406)
32.00 at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545)
32.00 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)
32.00 at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)
32.00 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187)
32.00 at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119)
32.00 ... 73 more
32.00 Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution [The connection attempt failed.] [n/a]
32.00 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421)
32.00 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
32.00 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
32.00 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817)
32.00 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
32.00 ... 94 more
32.00 Caused by: org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution [The connection attempt failed.] [n/a]
32.00 at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:98)
32.00 at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56)
32.00 at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
32.00 at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
32.00 at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:74)
32.00 at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.getIsolatedConnection(GenerationTargetToDatabase.java:60)
32.00 at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.jdbcStatement(GenerationTargetToDatabase.java:110)
32.00 at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:77)
32.00 at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:235)
32.00 at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:219)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.applyConstraintDropping(SchemaDropperImpl.java:455)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropConstraintsTablesSequences(SchemaDropperImpl.java:242)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:215)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:185)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:155)
32.00 at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:115)
32.00 at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:242)
32.00 at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:143)
32.00 at java.base/java.util.HashMap.forEach(HashMap.java:1425)
32.00 at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:140)
32.00 at org.hibernate.boot.internal.SessionFactoryObserverForSchemaExport.sessionFactoryCreated(SessionFactoryObserverForSchemaExport.java:37)
32.00 at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35)
32.00 at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:292)
32.00 at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431)
32.00 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1455)
32.00 at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
32.00 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
32.00 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
32.00 ... 98 more
32.00 Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
32.00 at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:354)
32.00 at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
32.00 at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:263)
32.00 at org.postgresql.Driver.makeConnection(Driver.java:443)
32.00 at org.postgresql.Driver.connect(Driver.java:297)
32.00 at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
32.00 at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
32.00 at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
32.00 at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
32.00 at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
32.00 at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
32.00 at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
32.00 at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
32.00 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:316)
32.00 at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:46)
32.00 ... 121 more
32.00 Caused by: java.net.UnknownHostException: postgres
32.00 at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567)
32.00 at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:331)
32.00 at java.base/java.net.Socket.connect(Socket.java:630)
32.00 at org.postgresql.core.PGStream.createSocket(PGStream.java:243)
32.00 at org.postgresql.core.PGStream.<init>(PGStream.java:98)
32.00 at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:132)
32.00 at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:258)
32.00 ... 135 more
Another thing, is that I don't have this error once I change the host to localhost
and I run the database using the command docker compose up database
and run the program on IntelliJ just by pressing run.