Tôi đã phát triển một ứng dụng khởi động mùa xuân dựa trên "Bắt đầu trên Heroku với Java" của Heroku. Sau đó, tôi đã bắt đầu định cấu hình MySQL làm cơ sở dữ liệu. Đây là hướng dẫn mà tôi đã làm theo trong suốt phương pháp này. Mọi thứ đều hoạt động tuyệt vời khi tôi chạy ứng dụng cục bộ với heroku local web
. Tôi có thể nhận được yêu cầu và nhận được dữ liệu được lưu trữ trong cơ sở dữ liệu. Tôi có thể thực hiện các yêu cầu POST và thêm dữ liệu mới vào cơ sở dữ liệu. Nhưng nếu tôi triển khai nó để sản xuất, tôi thấy các ngoại lệ được ném vào nhật ký. Dưới đây là phần liên quan của nhật ký mà tôi thấy khi tôi bắt đầu ứng dụng chạy trên URL Heroku cung cấp cho tôi, trong trường hợp này
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
Jan 04 02:24:27 danef-dictionary-api app/web.1
Jan 04 02:24:27 danef-dictionary-api app/web.1 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException[SQLError.java:174] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException[SQLExceptionsMapping.java:64] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.ConnectionImpl.createNewIO[ConnectionImpl.java:836] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.ConnectionImpl.[ConnectionImpl.java:456] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.ConnectionImpl.getInstance[ConnectionImpl.java:246] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.mysql.cj.jdbc.NonRegisteringDriver.connect[NonRegisteringDriver.java:199] ~[mysql-connector-java-8.0.18.jar:8.0.18]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.util.DriverDataSource.getConnection[DriverDataSource.java:138] ~[HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.pool.PoolBase.newConnection[PoolBase.java:353] ~[HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.pool.PoolBase.newPoolEntry[PoolBase.java:201] ~[HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.pool.HikariPool.createPoolEntry[HikariPool.java:473] [HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.pool.HikariPool.checkFailFast[HikariPool.java:562] [HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.pool.HikariPool.[HikariPool.java:115] [HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at com.zaxxer.hikari.HikariDataSource.getConnection[HikariDataSource.java:112] [HikariCP-3.4.1.jar:na]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection[DatasourceConnectionProviderImpl.java:122] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection[JdbcEnvironmentInitiator.java:180] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService[JdbcEnvironmentInitiator.java:68] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService[JdbcEnvironmentInitiator.java:35] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService[StandardServiceRegistryImpl.java:101] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService[AbstractServiceRegistryImpl.java:263] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService[AbstractServiceRegistryImpl.java:237] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService[AbstractServiceRegistryImpl.java:214] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices[DefaultIdentifierGeneratorFactory.java:152] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies[AbstractServiceRegistryImpl.java:286] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService[AbstractServiceRegistryImpl.java:243] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService[AbstractServiceRegistryImpl.java:214] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.[InFlightMetadataCollectorImpl.java:175] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete[MetadataBuildingProcess.java:118] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata[EntityManagerFactoryBuilderImpl.java:1202] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build[EntityManagerFactoryBuilderImpl.java:1233] [hibernate-core-5.4.9.Final.jar:5.4.9.Final]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory[SpringHibernateJpaPersistenceProvider.java:58] [spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory[LocalContainerEntityManagerFactoryBean.java:365] [spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory[AbstractEntityManagerFactoryBean.java:391] [spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet[AbstractEntityManagerFactoryBean.java:378] [spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet[LocalContainerEntityManagerFactoryBean.java:341] [spring-orm-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods[AbstractAutowireCapableBeanFactory.java:1855] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean[AbstractAutowireCapableBeanFactory.java:1792] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean[AbstractAutowireCapableBeanFactory.java:595] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean[AbstractAutowireCapableBeanFactory.java:517] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0[AbstractBeanFactory.java:323] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton[DefaultSingletonBeanRegistry.java:222] ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean[AbstractBeanFactory.java:321] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean[AbstractBeanFactory.java:202] [spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.context.support.AbstractApplicationContext.getBean[AbstractApplicationContext.java:1108] ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization[AbstractApplicationContext.java:868] ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.context.support.AbstractApplicationContext.refresh[AbstractApplicationContext.java:550] ~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh[ServletWebServerApplicationContext.java:141] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.SpringApplication.refresh[SpringApplication.java:747] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.SpringApplication.refreshContext[SpringApplication.java:397] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.SpringApplication.run[SpringApplication.java:315] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.SpringApplication.run[SpringApplication.java:1226] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at org.springframework.boot.SpringApplication.run[SpringApplication.java:1215] ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
Jan 04 02:24:27 danef-dictionary-api app/web.1 at net.danef.DanefDictionaryApiApplication.main[DanefDictionaryApiApplication.java:12] ~[classes/:na]
Từ các trường hợp ngoại lệ, tôi đã chọn cái đầu tiên, "lỗi liên kết chung" và sử dụng nó trong tiêu đề của câu hỏi này. Có lẽ tôi đã thử mọi thứ tôi có thể tìm thấy như một giải pháp vì vậy hãy thoải mái chuyển hướng tôi nếu bạn biết một bài đăng trên blog hoặc câu trả lời mà bạn nghĩ rằng điều đó là hữu ích.
Ứng dụng của tôi.ProperIES Tệp:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.generate-ddl=true
spring.datasource.url=jdbc:mysql://localhost:3306/db_words?useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=myusername
spring.datasource.password=mypassword
"MyUsername" và "MyPassword" chỉ là người giữ chỗ. Tôi đang sử dụng thông tin đăng nhập của mình trên mã của mình.
pom.xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.2.RELEASE
net.danef
danef-dictionary-api
0.0.1-SNAPSHOT
danef-dictionary-api
Danef Dictionary API
1.8
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
org.apache.maven.plugins
maven-dependency-plugin
3.0.1
copy-dependencies
package
copy-dependencies
Tham khảo liên kết này nếu bạn muốn xem phiên bản đầy đủ của nhật ký: //paste.ubuntu.com/p/wqzpxqyyfm/