mysql - JOOQ MySQL TEXT 数据类型
问题描述
我正在尝试使用 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 );
有什么提示吗?
解决方案
正如文件所说
请改用相应的SQLDataType。
您可以.column("ColumnName", SQLDataType.CLOB)
用于 MySQLTEXT
数据类型。
来自 MySQL文档
四种 TEXT (CLOB)类型是 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。这些仅在它们可以保存的值的最大长度上有所不同。
如果您使用SQLDataType.CLOB(LENGTH)
供应商特定的长度,您将得到TINYTEXT
, MEDIUMTEXT
,LONGTEXT
请注意,MySQL 指CLOB
的是TEXT
使用示例
SQLDataType.INTEGER.identity(true) // INTEGER Primary key
SQLDataType.VARCHAR(4095).nullable(false) // VARCHAR(4095) NOT NULL
SQLDataType.CHAR(10) // CHAR(10)
SQLDataType.BLOB // BLOB
SQLDataType.CLOB) // TEXT, same as blob, but with character encoding associated
SQLDataType.CLOB(16777215) // MEDIUMTEXT
SQLDataType.CLOB(4294967295) // LONGTEXT
推荐阅读
- python - 熊猫从上面的行复制值
- python - 如何在 discord.py 中将多个单词设置为单个命令?
- sql - 使用 A 列对记录进行计数和分组,并使用 where 子句对 B 列进行计数
- javascript - 获取深层嵌套对象结构中的父、祖父和键
- tree - 图和树遍历运行时
- java - 加入后在 CompletableFuture 中返回一个列表
- powerbi-desktop - 自定义格式未显示在可视化器上?
- mongodb - 如何将 connect-mongo 版本 4x 与 express-session 一起使用。我收到错误
- java - Google AdMob 测试广告不显示
- flutter - 访问 Flutter 资产中的所有文件夹