gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:36:33 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

  • 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.

    关于sql - flyway 命名约定不接受字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151107/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com