【问题标题】:flyway naming convention do not accept alpha numeric charactersflyway 命名约定不接受字母数字字符
【发布时间】:2015-05-22 22:50:54
【问题描述】:
schema_version 表中的属性“version”是 VARCHAR2(50 BYTE)。
当 DB 迁移脚本命名为 VB2042_1_First_Changes.sql Flyway 时抛出错误消息。
错误:版本号应始终从 0..9 开始
varchar2 数据类型应该能够接受字母数字数据。这是 flyway 3.2 中的错误还是有任何可用的解决方法。
【问题讨论】:
标签:
sql
migration
naming
conventions
flyway
【解决方案1】:
在我看来你的命名有两个问题。
-
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 上发表的演讲中的一张幻灯片,总结了这些规则。