【问题标题】:Can I use JOOQ generated code against another DB schema?我可以针对另一个数据库模式使用 JOOQ 生成的代码吗?
【发布时间】:2017-04-29 18:22:36
【问题描述】:

我正在使用 JOOQ 访问 Rails 数据库,如您所知,Rails 具有三个数据库模式,“测试”、“开发”和“生产”。我们现在将这些模式称为 TEST、DEV 和 PROD。

现在我已经在 library.xml 中使用(几乎)这个设置生成了针对 DEV 的代码

<jdbc>
  <driver>com.mysql.jdbc.Driver</driver>
  <url>jdbc:mysql://<ip-address>:3306/data_dev</url>
  <user>secret</user>
  <password>secret</password>
</jdbc> 

我使用如下代码连接:

String url = "jdbc:mysql://" + 
    db_host + "/" + 
    db_schema + "?" + 
    "user=" + db_user + 
    "&password=" + db_pass;

conn = DriverManager.getConnection(url);
dsl = DSL.using(conn, SQLDialect.MYSQL);

现在我想针对 PROD 运行代码,它的结构相同,但当然有生产数据。

但是,即使我将连接 URL 更改为模式 PROD,我似乎仍然可以访问 DEV?生成的代码是否硬编码到 DEV 数据库?

我很困惑如何继续。

【问题讨论】:

  • 这段java代码和rails有什么关系?数据库只是一个数据库,您使用了错误的 URL。
  • JOOQ 是一个用于访问数据库的 Java 库,您肯定知道吗?我只是在解释为什么我在相同的代码中使用不同的模式。我的经验是,我必须解释这样的细节以避免一堆“你为什么这样做,你想做什么” - 问题。并请说明您说 URL 错误的部分?

标签: java ruby-on-rails jooq


【解决方案1】:

显然您可以在运行时更改映射的数据库。

https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/runtime-schema-mapping/

我在文档中完全错过了这一点。不过还是谢谢大家的帮助...

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2015-01-20
    • 2020-01-07
    • 2019-02-16
    • 2010-11-11
    • 2013-03-28
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多