Flyway 命名约定不接受字母数字字符

pav*_*van 3 sql migration naming conventions flyway

schema_version 表中的属性“version”是 VARCHAR2(50 BYTE)。

当数据库迁移脚本被命名为VB2042_1_First_Changes.sql Flyway 时抛出错误消息。

错误:版本号应始终从 0..9 开始

varchar2 数据类型应该能够接受字母数字数据。这是 flyway 3.2 中的错误还是有任何可用的解决方法。

Bas*_*que 6

你的命名对我来说似乎有两个问题。

  • V后面必须跟数字
    (你有一个B。)
  • 一个双下划线必须从描述中分离的版本号。
    (看起来你只有一个下划线。)

关键概念是 Flyway 确实将您的版本号(文件名的第一部分)转换为实际的 Major.Minor.Micro.Nano 样式编号,就像软件行业中常用的那样。换句话说,您脚本的版本号不是按字母顺序排列的

V需要确定这个脚本作为一次性运行,与此相反的R,这意味着重复,每次运行。在第一个字符之后,在V/ 之后R,是您的版本号。

版本号的每个组成部分由下划线或点分隔。在内部,下划线被转换为点,所以我只使用点。另外,我喜欢点,因为它们与双下划线和我在描述部分可能有的任何下划线形成对比,强调它们构成了实际的版本号。

所以你的文件名为:

VB2042_1_First_Changes.sql

...应该以这种方式命名,删除B并在中间添加第二个下划线......

V2042_1__First_Changes.sql

... Flyway 将在内部生成一个版本号2042.1

就个人而言,我使用大致日期和小时作为我的脚本版本号。我使用点而不是下划线。所以我会把它用在今年 1 月 23 日晚上写的剧本中。

V2017.01.23_19__First_changes.sql

... Flyway 将在内部生成一个版本号2017.1.23.19。注意01这里的任何前导零是如何被忽略的,因为字符串被转换为数字。

这是我在 Flyway 上的演讲的幻灯片,总结了这些规则。

Flyway 演示文稿中的幻灯片,总结了命名规则。