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

时间:2015-03-19 17:23:03

标签: sql migration naming conventions flyway

属性"版本"在schema_version表中是VARCHAR2(50 BYTE)。

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

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

开始

varchar2数据类型应该能够接受字母数字数据。这是飞路3.2中的一个错误,还是有任何可用的工作。

1 个答案:

答案 0 :(得分:4)

看起来我的命名有两个问题。

  • 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上发表的演讲中的幻灯片,总结了这些规则。

a slide from a presentation on Flyway, summarizing naming rules.