gpt4 book ai didi

java - 已部署的 Java Spring 应用程序 : cannot connect to JawsDB on Heroku

转载 作者:行者123 更新时间:2023-12-01 16:37:06 25 4
gpt4 key购买 nike

我正在尝试使用 MariaDB 数据库在 Heroku 上部署 Java Spring 应用程序。在 Heroku 上,我按照推荐使用 JawsDB。所有连接属性都是通过集成的 Heroku 环境变量设置的。使用 Heroku CLI 的构建和部署成功完成。使用 HeidiSQL 与同一个 JawsDB 的连接工作正常,因此 URL 参数应该是正确的。应用程序以相同的方式运行并连接到本地 MariaDB,没有任何问题。我还尝试将数据库驱动程序设置为“com.mariadb.jdbc.Driver”和“org.mysql.jdbc.Driver”,但都失败了。

当我部署应用程序时,我收到此错误堆栈:

org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State : null
Error Code : 0
Message : Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL
'mysql://u3r5w4ayhxzdrw87.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/{database_name}'
java.sql.SQLException: No suitable driver

这就是 AppConfiguration.java 中 Bean 配置的样子,当我在本地运行应用程序时它会起作用:

@Bean
public BasicDataSource dataSource() throws ClassNotFoundException {
BasicDataSource basicDataSource = new BasicDataSource();
Class.forName("com.mysql.jdbc.Driver");
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl(System.getenv("JDBC_URL"));
basicDataSource.setUsername(System.getenv("JDBC_USERNAME"));
basicDataSource.setPassword(System.getenv("JDBC_PASSWORD"));

return basicDataSource;
}

我还复制了 pom.xml 中配置的依赖项:

    (...)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.heroku</groupId>
<artifactId>webapp-runner</artifactId>
<version>9.0.30.0</version>
<destFileName>webapp-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
(...)

Proc文件:

web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

我将包含 MySQL 和 MariaDB 连接驱动程序的 .jar 文件复制到 WEB-INF/libs 文件夹:mariadb-java-client-2.3.0.jar & mysql-connector-java-8.0.20.jar.

有人有建议或发现有用的东西吗?

最佳答案

mysql://u3r5w4ayhxzdrw87.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/ 不是有效的 JDBC URL,很可能是导致问题的原因。

您在 Heroku 上使用哪些环境变量?

我们将标准 DATABASE_URL(以及其他内容,包括 JAWSDB_URLJAWSDB_MARIA_URL)重写为 JDBC 兼容 URL,并将其作为JDBC_DATABASE_URLJDBC_USERNAMEJDBC_PASSWORD 也可用。尝试使用它们,看看这是否可以解决您的问题。

关于java - 已部署的 Java Spring 应用程序 : cannot connect to JawsDB on Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com