java-Jooq模式区分大小写

我遇到的情况是,我使用相同的架构名称在Oracle和MySql之间切换.我想使用任一数据库类型生成类并在另一数据库上执行操作.由于区分大小写的问题,我发现可以同时使用这两种方法的是小写模式名称(由于Oracle和MySql都支持),而在UpperCase中包含表名称和列名称(同样的原因).

但是,当将outputShema声明为小写时,Jooq会明确检查数据库类型,如果是Oracle,则将其设置为UpperCase.有什么解决方法吗?

解决方法:

您遇到了一系列不幸的警告,所有这些很快都会得到解决.现在的解决方法是在两个数据库中使用UPPER_CASE模式名称,并将代码生成器配置为至少包含两个输入模式.我会解释:

Oracle和小写模式名称

不幸的是,由于Oracle中的历史原因,jOOQ当前使用不区分大小写的模式名称搜索.这导致性能问题:
https://github.com/jOOQ/jOOQ/issues/5989

而且也是不正确的.这就是jOOQ 3.10将解决此问题的原因:
https://github.com/jOOQ/jOOQ/issues/5990

MySQL和UPPER_CASE模式名称

根据您的操作系统(例如Windows和MacOS)以及MySQL中的区分大小写设置,UPPER_CASE模式名称会存在一些问题.这可能会导致jOOQ的代码生成器出现问题:
https://github.com/jOOQ/jOOQ/issues/5213

该问题已在jOOQ 3.10中修复,并将集成在3.9.3中.此问题的解决方法是在jOOQ代码生成器中使用多个输入模式,它将解决此怪异的MySQL错误:
https://bugs.mysql.com/bug.php?id=86022

摘要

一个不错的选择是在所有地方都使用UPPER_CASE,包括您的DDL语句:

CREATE TABLE "ORACLE_SCHEMA"."ORACLE_TABLE" AS (
  "ORACLE_COLUMN" VARCHAR2(50)
);

CREATE TABLE `MYSQL_SCHEMA`.`MYSQL_TABLE` AS (
  `MYSQL_COLUMN` VARCHAR(50)
);
上一篇:java-选择获取一个返回null的结果


下一篇:java-Jooq-普通SQL参数化数组/列表