如何在 Flyway 中设置排序规则?

Posted

技术标签:

【中文标题】如何在 Flyway 中设置排序规则?【英文标题】:How to set Collation in Flyway? 【发布时间】:2021-03-01 08:13:19 【问题描述】:

我尝试用排序规则创建一个表,如下图:

CREATE TABLE cuisines (
    id          VARCHAR(40) NOT NULL,
    enName      VARCHAR(45) NOT NULL,
    frName      VARCHAR(45) NOT NULL,
    spotlight   BOOLEAN     NOT NULL,
    enabled     BOOLEAN     NOT NULL,
    emojis      VARCHAR(40),
    image_url   VARCHAR(255),
    PRIMARY KEY (id)
) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;

但是Flyway说有语法错误,如下图。

[ERROR] Message    : Syntax error in SQL statement "CREATE TABLE CUISINES (
[ERROR]     ID          VARCHAR(40) NOT NULL,
[ERROR]     ENNAME      VARCHAR(45) NOT NULL,
[ERROR]     FRNAME      VARCHAR(45) NOT NULL,
[ERROR]     SPOTLIGHT   BOOLEAN     NOT NULL,
[ERROR]     ENABLED     BOOLEAN     NOT NULL,
[ERROR]     EMOJIS      VARCHAR(40),
[ERROR]     IMAGE_URL   VARCHAR(255),
[ERROR]     PRIMARY KEY (ID)
[ERROR] ) DEFAULT CHARSET=UTF8MB4 COLLATE[*] UTF8MB4_UNICODE_CI ";

有人可以教我如何在 Flyway 中设置排序规则吗?

谢谢!

【问题讨论】:

Flyway、mysql 有哪些版本? 【参考方案1】:

我刚刚使用 MySQL 8.0.11 和 Flyway 7.1 尝试了该脚本,并且迁移工作正常。我相信这本身不是 Flyway 错误,它来自数据库 - 这表明 SQL 对于您的 MySQL 版本是错误的。错误消息中的 [*] 很奇怪...在任何阶段都没有出现在您的脚本中?

【讨论】:

不,* 不是我的代码的一部分。我想这是为了指出问题所在。在这种情况下,它是COLLATE

以上是关于如何在 Flyway 中设置排序规则?的主要内容,如果未能解决你的问题,请参考以下文章

如何在整个数据库中更改 CHARACTER SET(和 COLLATION)?

如何在整个数据库中更改 CHARACTER SET(和 COLLATION)?

如何在整个数据库中更改 CHARACTER SET(和 COLLATION)?

如何在firebase实时数据库规则中设置变量

如何在 flyway.conf 中设置 orcale 钱包

如何在弹性 beantalk 负载均衡器中设置自定义标头相关规则