我正在创建一个springboot应用程序,该应用程序的数据存储在mysql数据库中。我已使用cleardb作为附加组件并将该应用程序部署到Heroku。当我运行该应用程序(即heroku打开)时,主页(index.html)成功显示,因为它不需要访问mySQL数据库。但是,所有需要访问mySQL数据库的页面都不会显示,并返回以下错误:
发生意外错误(类型=内部服务器错误,状态= 500)。无法获取JDBC连接;嵌套的异常是com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链接失败最近一次成功发送到服务器的数据包是在0毫秒之前。驱动程序尚未收到来自服务器的任何数据包。
这是我的一些代码:
Databaseconfig
@Configuration
公共类DatabaseConfig {
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(DataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost/NBA");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
pom.xml插件
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
database_url(heroku配置)
CLEARDB_DATABASE_URL: mysql://b05ee51c5eec59:[email protected]/heroku_f61b74207636b77?reconnect=true
DATABASE_URL: 'mysql://b05ee51c5eec59:[email protected]/heroku_f61b74207636b77?reconnect=true'
一些注意事项:
我的application.properties文件当前为空。
当我在localhost:8080上运行该应用程序时,它可以完美运行。
任何帮助,我们将不胜感激。
对于您的情况,您必须根据database_url(heroku config)更改dataSource配置:
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://us-cdbr-iron-east-05.cleardb.net/heroku_f61b74207636b77?reconnect=true");
dataSource.setUsername("b05ee51c5eec59");
dataSource.setPassword("94a4e9eb");
我还建议您在application.properties中使用以下内容,而不要使用数据源bean:
spring.datasource.username=
spring.datasource.password=
spring.datasource.url=
也非常重要:在heroku中更改数据库密码,不要在互联网上写它