当前位置: 首页 > 知识库问答 >
问题:

Jooq数据库/模式名称映射

魏泰
2023-03-14

我使用jooq针对本地数据库生成对象,但在以后的生产中运行“for real”时,实际数据库将具有不同的名称。为了解决这个问题,我使用

同时,我们有多个数据库(模式),并使用一个到服务器的连接池,如“jdbc:mysql://localhost:3306/“(此处不指定数据库)。

如何告诉jooq运行查询时使用哪个数据库?

我已经尝试了我能想到的所有配置:

new Settings()
        .withRenderSchema(true)     // true/false seems to make no difference.
        .withRenderCatalog(true)    // true/false seems to make no difference.
        .withRenderMapping(new RenderMapping()
                .withDefaultSchema("my_database")     // Seems to have no effect.
                // The above 3 configs always give me an error saying "no database selected".

                // Adding this gives me 'my_database.my_table' does not exist - while it actually does.
                .withSchemata(new MappedSchema()
                        .withInputExpression(Pattern.compile(".*"))
                        .withOutput("my_database")
                ));

我还尝试了使用数据库/模式名称,如不配置outputSchemaToDefault。但是,添加上面的MappdSchema代码,但这会给我错误'my_databasemy_database.my_table'不存在,这是正确的。我不知道为什么代码给了我两次数据库/模式名称?

编辑:当jooq告诉我db。表不存在,如果我将断点放在一个好的位置,并从jooq获取sql,然后在我的数据库上运行它,它确实会工作。但jooq没有运行它。

另外,我使用的是jooq的3.15.3版本。


共有1个答案

乐正峰
2023-03-14

我解决了。而不是使用。使用InputExpression(Pattern.compile(“.*)),它似乎可以与一起工作。使用输入(“”)。

我仍然不确定它为什么会起作用,或者这是否是解决它的“正确”方式。但至少这是一条前进的道路。

我不知道为什么要用这个模式,但我得到了两次这个名字。但那一个我不去管了。

 类似资料:
  • 问题内容: MySQL中有什么方法可以将数据库名称放入变量中?例如,当我有一个名为“ db1”的数据库时,可以执行以下操作: 编辑:还有一个我想做的例子: 问题答案: 付出了很大的努力,是的。

  • 问题内容: 我需要清除所有库存表。 我已经试过了: 但是我得到这个错误: 如果这是正确的方法,那我做错了什么? 问题答案: 使用concat: 当然,这只会生成您需要复制和运行自己的SQL。

  • 我有一个jsp网页。我需要删除用户名从数据库当我按删除按钮从网页。我尝试了下面的代码,但是我不能删除名称,而是在用户名数据库中插入一个新行和一个空值。 unblockServlet.java: 受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{//TODO自动生成的方法

  • 若要开始使用服务器对象,你应该创建并打开一个连接。如果服务器中没有任何对象,你需要创建一个新的数据库或/和一个新的模式。 创建一个新的数据库 在导航窗格中,右击连接并选择“新建数据库”。 在弹出的窗口中输入数据库的属性。 编辑一个现有的数据库 在导航窗格中,右击数据库并选择“编辑数据库”。 在弹出的窗口中编辑数据库的属性。 创建一个新的模式 在导航窗格中,右击数据库并选择“新建模式”。 在弹出的窗

  • 若要开始使用服务器对象,你应该创建并打开一个连接。如果服务器中没有任何对象,你需要创建一个新的数据库或/和一个新的模式。 创建一个新的数据库 在导航窗格中,右击连接并选择“新建数据库”。 在弹出的窗口中输入数据库的属性。 编辑一个现有的数据库 在导航窗格中,右击数据库并选择“编辑数据库”。 在弹出的窗口中编辑数据库的属性。 创建一个新的模式 在导航窗格中,右击数据库并选择“新建模式”。 在弹出的窗

  • 若要开始使用服务器对象,你应该创建并打开一个连接。如果服务器中没有任何对象,你需要创建一个新的数据库或/和一个新的模式。 创建一个新的数据库 在导航窗格中,按住 Control 键并点按连接,然后选择“新建数据库”。 在弹出的窗口中输入数据库的属性。 编辑一个现有的数据库 在导航窗格中,按住 Control 键并点按数据库,然后选择“编辑数据库”。 在弹出的窗口中编辑数据库的属性。 创建一个新的模