-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
重现步骤
1. 在mysql数据库中创建表
create table test
(
nc char(100) charset utf8 null,
nvc varchar(100) charset utf8 null,
c char(100) null,
vc varchar(100) null,
i int(10) null,
bi bigint null,
si smallint null,
ti tinyint null
)
2. 执行如下代码
Dialect dialect = Dialect.MySQL8Dialect;
// 获取连接
Connection connection = getConnection();
TableModel[] tableModels = TableModelUtils.db2Models(connection, dialect);
TableModel tableModel = tableModels[0];
String[] ddl = dialect .toCreateDDL(tableModel);
System.out.println(ddl[0]);
输出如下:
create table test
(
nc char(300),
nvc varchar(300),
c char(400),
vc varchar(400),
i integer,
bi bigint(0),
si smallint(0),
ti tinyint(0)
) engine=InnoDB;
可以看到字段的长度被放大了
原因
解析字段的时候使用了CHAR_OCTET_LENGTH
作为columnLength,生成ddl的时候也是用的这个,但是实际上mysql很多字段使用的都是COLUMN_SIZE
Metadata
Metadata
Assignees
Labels
No labels