gpt4 book ai didi

java - Spring 在本地看不到数据源,但部署在 Horaku 上工作正常

转载 作者:行者123 更新时间:2023-11-30 01:49:58 25 4
gpt4 key购买 nike

我正在做 Heroku 教程 https://devcenter.heroku.com/articles/getting-started-with-gradle-on-heroku一切都很好,直到我无法在本地实例中运行数据库。

我在 intelij 中并通过控制台尝试了它(构建 gradlew 后的 $heroku 本地网络)。我尝试将数据库从 Heroku 复制到本地 postgresDb 但也失败了。

    @Value("${spring.datasource.url}")
private String dbUrl;

@Autowired
private DataSource dataSource;

@RequestMapping("/db")
String db(Map<String, Object> model) {
try (Connection connection = dataSource.getConnection()) {
Statement stmt = connection.createStatement();
stmt.executeUpdate("CREATE TABLE IF NOT EXISTS ticks (tick timestamp)");
stmt.executeUpdate("INSERT INTO ticks VALUES (now())");
ResultSet rs = stmt.executeQuery("SELECT tick FROM ticks");

ArrayList<String> output = new ArrayList<String>();
while (rs.next()) {
output.add("Read from DB: " + rs.getTimestamp("tick"));
}

model.put("records", output);
return "db";
} catch (Exception e) {
model.put("message", e.getMessage());
return "error";
}
}

@Bean
public DataSource dataSource() throws SQLException, URISyntaxException {
if (dbUrl == null || dbUrl.isEmpty()) {
return new HikariDataSource();
} else {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(dbUrl);
return new HikariDataSource(config);
}
}

我还尝试从 Heroku 配置接收 dbUrl

URI dbUri = new URI(System.getenv("DATABASE_URL"));

String username = dbUri.getUserInfo().split(":")[0];
String password = dbUri.getUserInfo().split(":")[1];
String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath() + "?sslmode=require";

进入/db 页面后,我收到 HikariPool-1 - dataSource 或 dataSourceClassName 或 jdbcUrl is required。我做错了什么?

最佳答案

使用教程中的@Bean。您必须从heroku复制(或只是创建).env文件并添加连接字符串,因为它最初并不存储在那里,但heroku像以前一样对待它。

  • 在控制台中通过命令获取 JDBC_DATABASE_URL(在 Windows 上)heroku run echo $JDBC_DATABASE_URL
  • 从输出中复制字符串
  • 将此字符串作为变量粘贴到项目的 .env 文件中 JDBC_DATABASE_URL="your_conecction_string_copied_from_console"
  • 控制台:heroku 本地网络
  • 利润:)

Windows 快捷方式脚本:

echo|set/p="JDBC_DATABASE_URL="| heroku 运行 echo $JDBC_DATABASE_URL >> .env

关于java - Spring 在本地看不到数据源,但部署在 Horaku 上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409273/

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