如何将MySQL JOOQ重命名表查询范围扩展到同一个数据库?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将MySQL JOOQ重命名表查询范围扩展到同一个数据库?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1512字,纯文字阅读大概需要3分钟。
内容图文
我有一个scala应用程序来管理多个MySQL数据库模式,其中包括修改(添加,重命名等)表.这些命令通过连接池发出,该连接池连接到数据库服务器中的通用管理数据库.
因为应用程序被设计为跨数据库,所以我使用JOOQ来呈现SQL查询(通过单独的JDBC模块执行).
我遇到了JOOQs的问题alterTable(…).renameTo(…)DSL – 请考虑以下示例:
我们在数据库“TestDatabase”中有一个表“TestTable”.假设我想将该表简单地重命名为“Foo”,将其保存在“TestDatabase”中.
这段代码:
...
val context = DSL.using(SQLDialect.MYSQL_5_7)
val query = context
.alterTable(table(name("TestDatabase", "TestDatabase")))
.renameTo(name("TestDatabase", "Foo"))
...
生成:ALTER TABLE`TestDatabase“TestTable`重命名为`Foo`
但是,由于我正在使用的连接池连接到我的管理数据库,它只是将表重命名为“Foo”并将其移动到我的管理数据库.我原以为SQL应该是:ALTER TABLE`TestDatabase“TestTable`重命名为`TestDatabase“Foo`.我尝试了各种替代方法来调用.renameTo方法并将其设置为使用完全限定名称,但无济于事:
> .renameTo(table(name(…) – >相同的行为.
> .renameTo(“`TestDatabase` .Foo`”) – >使用反引号转义名称,将其视为一个名称而不是限定名称.
我想知道我是否遗漏了某些东西,如果这是预期的行为,或者甚至是JOOQ的错误或设计缺点.
有没有办法使用完全限定名称重命名表?
谢谢!
解决方法:
这是jOOQ:https://github.com/jOOQ/jOOQ/issues/8042中的一个错误
你的解决方法很接近.这不起作用:
.renameTo("`TestDatabase`.`Foo`")
正如您已经注意到的那样,在幕后,DSL.name()API用于包装目标名称,因为renameTo()方法不实现plain SQL templating API.但是,您可以通过写入明确使用纯SQL模板作为一种解决方法:
.renameTo(table("`TestDatabase`.`Foo`"))
内容总结
以上是互联网集市为您收集整理的如何将MySQL JOOQ重命名表查询范围扩展到同一个数据库?全部内容,希望文章能够帮你解决如何将MySQL JOOQ重命名表查询范围扩展到同一个数据库?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。