JPABuddy Liquibase Init 生成的 MySQL 使用 utf8mb3 作为 nvarchar?

JPABuddy Liquibase Init generation of MySQL uses utf8mb3 for nvarchar?

提问人:vunhatchuong 提问时间:6/27/2023 更新时间:6/27/2023 访问量:59

问:

我使用 JPABuddy 为 MySQL 8.0.33 DB 生成一个 init Liquibase 数据库。我注意到对于数据类型,它使用字符集utf8mb3,排序规则utf8mb3_general_ci已弃用,而是MySQL建议使用utf8mb4。nvarchar

这是尝试使用 nvarchar 时的响应:

0 row(s) affected, 1 warning(s): 3720 NATIONAL/NCHAR/NVARCHAR implies the character set UTF8MB3, which will be replaced by UTF8MB4 in a future release. Please consider using CHAR(x) CHARACTER SET UTF8MB4 in order to be unambiguous.

解决方案是将生成文件中的实例更改为 to,但这会破坏 Liquibase 灵活更改日志的目的。nvarcharvarchar

mysql utf8mb4 jpa-buddy

评论

0赞 Georgii Vlasov 6/28/2023
你好!我不太明白你想达到什么结果。你能澄清一下吗?1) JPA Buddy 为@Nationalized属性生成 nvarchar。您是否希望生成另一种类型?2) 为什么使用 varchar 而不是 nvarchar 会破坏 Liquibase 灵活更新日志的目的?
0赞 vunhatchuong 6/28/2023
预期的结果是,如果您使用 MySQL,nvarchar 将转换为 varchar,因为 MySQL 不区分两者,正如您在响应内联代码中看到的那样。您可以确认这一点,因为如果您使用任何方法生成更改日志文件:或 。您将看到 nvarchar 和 varchar 在创建表时转换为相同的类型。1) 我希望 nvarchar、varchar 都是 .generateChangeLogdiffhibernate.hbm2ddl.auto: create-droputf8mb4
0赞 Georgii Vlasov 6/28/2023
据我了解,根据 Gavin King 和 Jonathan Baker 之间的讨论(hibernate.zulipchat.com/#narrow/stream/132096-hibernate-user/...),Hibernate 目前的问题是它为@Nationalized属性生成了一个简单的 varchar,但这实际上是一个很快就会修复的错误。正确的生成应该是varchar($l) character set utf8
0赞 Georgii Vlasov 6/28/2023
我已经为 JPA Buddy 创建了一个工单来修复生成模式,我们将尽快尝试:)您可以在此处跟踪其状态:issues.jpa-buddy.com/issue/JPAB-2585
0赞 Georgii Vlasov 6/28/2023
作为目前的解决方法,您可以使用 columnDefinition。例如:columnDefinition = “varchar(255) character set utf8” 然后,JPA Buddy 将生成脚本,并考虑 columnDefinition 中指定的内容。

答: 暂无答案