代码之家  ›  专栏  ›  技术社区  ›  Adam Bellaire

如何使用Perl控制数据库的版本?

  •  12
  • Adam Bellaire  · 技术社区  · 17 年前

    我一直在研究如何将数据库模式置于版本控制之下。看来Ruby的人已经 Rails Migrations ,而.NET用户有一些选择(例如 this , this this ).那Perl呢?

    thread on PerlMonks 虽然它提到了 DBIX::Migration::Directories . 是否有人实际使用此模块或其他模块?或者您是否推出自己的数据库迁移解决方案?

    免费资料:

    • 不要 大多数情况下使用DBIx::Class
    • 我们使用MySQL
    • 我们使用SVN
    6 回复  |  直到 9 年前
        1
  •  7
  •   Ovid    10 年前

    在工作中,我们使用的是 DBIx::Migration (它有一些限制,例如不超过10次迁移)。然后,您有一个从数据库中转储的核心架构,当版本号太低时,您可以使用迁移架构目录中的迁移来升级数据库。

    Database Refactoring 安全地

    Devel::Deprecate 这样你就不需要记住什么时候做这些弃用了。您的代码将为您大声抱怨(并且仅在测试中,而不是在生产中)。

    :您会定期发现使用此技术应用了太多的数据库迁移级别,因此有时需要“提高”最小基本迁移,因为重建数据库的时间太长。只需在所需的迁移级别上对数据库进行新转储,并删除所有小于或等于该级别的迁移。

    :快进几年,今天我推荐 sqitch

        2
  •  6
  •   Brian Phillips    17 年前

    一个非常有趣的项目,可能仍然有点年轻,可以依赖的是亚当·肯尼迪的 ORLite::Migrate 它的灵感来自Rails迁移。他 wrote up a very interesting journal 我在use.perl.org上看到了他的计划,我希望以后能关注它。

        3
  •  3
  •   innaM    17 年前

    在里面 POPFile 我们使用自己的解决方案。我们在数据库中存储一个模式版本号,如果程序检测到有一个较新的模式,它将相应地更新数据库。这并不是我们代码中最好和最有趣的部分。

    老实说,如果您还没有使用DBIx::Migration::Directories,我就看不到使用DBIx::Migration::Directories的好处。您必须提供SQL、版本号和数据库句柄。您还可以提供更多的代码来查找sql文件并将其提供给数据库。

    当然,在版本控制中使用模式是一个很大的好处。

        4
  •  3
  •   Ask Bjørn Hansen    17 年前

    • 无法回滚模式更改(通常情况下,这是罕见的,没有经过很好的测试,而且无论如何都很难,因此必须手动执行并不是什么大问题)。

    • 当您在多个分支中开发时,使用顺序版本号是一件痛苦的事情——因为您使用的是SVN,所以这不像使用git那样可能是一个问题。:-)

    我使用的脚本如下所示: database_update example data file .

        5
  •  3
  •   Diab Jerius    12 年前

    sqitch ? 它自称为“数据库更改管理应用程序”,

        6
  •  0
  •   Miguel Prz    12 年前

    有一个有趣的CPAN模块( Database::Migrator