postgresql - 错误 CREATE DATABASE 无法在事务块内运行
问题描述
我正在尝试使用 jOOQ 从在 Micronaut 框架中运行的 Java 应用程序创建数据库。
编码
contextSupplier.get().createDatabaseIfNotExists(this.databaseName).execute();
使用 PostgreSQL 数据源失败:
org.jooq.exception.DataAccessException: SQL [do $$ begin create database "mydb"; 当 sqlstate '42P07' 然后为 null 时出现异常;结束$$]; 错误:CREATE DATABASE 不能在事务块内运行
是否有一种简单的方法可以仅针对此语句在 jOOQ 中关闭事务?
解决方案
从 jOOQ 3.14 开始,DSLContext.createDatabaseIfNotExists()
这些方言支持该方法(参见其@Support
注释):
@Support({AURORA_POSTGRES,COCKROACHDB,MARIADB,MEMSQL,MYSQL,SQLDATAWAREHOUSE,SQLSERVER})
因此,jOOQ for PostgreSQL 尚不支持此语句 - 如果我没记错的话,正是出于这个原因。也许有一种不同的方式来模拟该语句,但它尚未实现。
推荐阅读
- python - CNN准确度不准确
- javascript - HTML Figure 标签用法
- javascript - 关于通过 CSS 使用或不使用 JavaScript 辅助实现具有多个选项卡的单个 HTML 页面
- performance - haskell 列表推导是懒惰的吗?
- apache-kafka - Salesforce Camel Kafka 连接器将消息转换为奇怪的格式
- java - 使用 Java 8 Streams 将迭代方法转换为函数式
- mysql - 从 SQL 查询 recipesexample 数据库,只为凡人
- flutter - “您可能在 Ruby 解释器或扩展库中遇到了错误。” 使用颤振在 iOS 模拟器上运行应用程序时出错
- python - 如何在使用 torch 模块的 iOS 或 android 上运行 python 脚本?
- macos - 在mac 64位上的nasm程序集中删除/取消链接文件