我有一个案例,我使用相同的模式名称在Oracle和MySql之间切换 . 我想使用数据库类型生成类,并在另一个上执行操作 . 由于区分大小写的问题,我发现适用于两者的方法是包含小写的模式名称(由Oracle和MySql支持)以及UpperCase中的表名和列名(同样的原因) .
但是,当将outputShema声明为小写时,Jooq显式检查数据库类型,如果它是Oracle,则将其设置为UpperCase . 这有什么解决方法吗?
你遇到了一系列令人遗憾的警告,很快就会修好 . 现在的解决方法是在两个数据库中使用 UPPER_CASE 模式名称,并将代码生成器配置为包含至少两个输入模式 . 我会解释一下:
UPPER_CASE
不幸的是,jOOQ目前在Oracle中使用不区分大小写的模式名称搜索的历史原因 . 这会导致性能问题:https://github.com/jOOQ/jOOQ/issues/5989
而且也是不正确的 . 这就是为什么jOOQ 3.10会解决这个问题:https://github.com/jOOQ/jOOQ/issues/5990
根据您的操作系统(例如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) );
1 回答
你遇到了一系列令人遗憾的警告,很快就会修好 . 现在的解决方法是在两个数据库中使用
UPPER_CASE
模式名称,并将代码生成器配置为包含至少两个输入模式 . 我会解释一下:Oracle和lower_case模式名称
不幸的是,jOOQ目前在Oracle中使用不区分大小写的模式名称搜索的历史原因 . 这会导致性能问题: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语句: