【发布时间】:2019-02-28 17:45:08
【问题描述】:
我正在尝试使用 JOOQ 生成这个简单的 SQL,但由于某种原因我无法完成。
CREATE TABLE T (
F TEXT
);
我希望它是这样的
dsl.createTable(name("T"))
.column("F", MySQLDataType.TEXT);
很遗憾,MySQLDataType 已弃用 (Do not reference this type directly from client code. Referencing this type before the SQLDataType class has been initialised may lead to deadlocks!)。所以我尝试了
dsl.createTable(name("T"))
.column(field("F TEXT"));
但我得到了以下 SQL,这是不合法的。
CREATE TABLE `T` (F text other null );
有什么提示吗?
【问题讨论】:
-
使用此包中的
SQLDataTypeimport org.jooq.impl.SQLDataType;,例如SQLDataType.TEXT.nullable(false) -
@AamirR
SQLDataType中没有字段TEXT。见,jooq.org/javadoc/3.9.6/org/jooq/impl/SQLDataType.html -
你可以试试
SQLDataType.CLOB,检查数据库中的结果数据类型,希望对你有帮助! -
@AamirR 使用
SQLDataType.CLOB结果与预期的一样CREATE TABLE T (F text null);所以这实际上解决了问题。因此,请更新您的答案,以便我接受。不过,有一件事困扰着我:如果我想要LONGTEXT怎么办?如果我想要其他供应商特定类型怎么办? -
很高兴它有帮助,用新信息更新了我的答案