Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何使用Perl控制数据库的版本?_Database_Perl_Version Control_Migration - Fatal编程技术网

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

Database 如何使用Perl控制数据库的版本?,database,perl,version-control,migration,Database,Perl,Version Control,Migration,我一直在研究如何将数据库模式置于版本控制之下。似乎Ruby用户已经有了,而.NET用户也有了一些选择(例如,和)。Perl呢 我看过这篇文章,虽然它提到了很多,但内容并不多。是否有人实际使用此模块或其他模块?或者您是否推出自己的数据库迁移解决方案 免费资料: 我们在很大程度上不使用DBIx::Class 我们使用MySQL 我们使用SVN 在这方面,我们使用自己的解决方案。我们在数据库中存储一个模式版本号,如果程序检测到有一个较新的模式,它将相应地更新数据库。这并不是我们代码中最好和最有趣的部

我一直在研究如何将数据库模式置于版本控制之下。似乎Ruby用户已经有了,而.NET用户也有了一些选择(例如,和)。Perl呢

我看过这篇文章,虽然它提到了很多,但内容并不多。是否有人实际使用此模块或其他模块?或者您是否推出自己的数据库迁移解决方案

免费资料:

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

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


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

      一个非常有趣的项目,它可能仍然有点年轻,可以依赖于Adam Kennedy的项目,它从Rails迁移中获得灵感。他在use.perl.org上发表了他的计划,我希望今后能密切关注


      这个软件包目前似乎只适用于SQLite,但我认为Adam计划在将来构建一个更不依赖数据库的软件包。

      我们使用的系统与Manni所描述的类似。两大缺点是:

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

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


      我使用的脚本在这里:有一个小的。

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

      我也强烈推荐这本书。除其他外,它将为您提供安全管理迁移的优秀技术,这样,如果您需要回滚,您就不会丢失数据(例如,当您删除您认为不需要的列时)

      为了帮助实现它所建议的自动弃用计划,我编写了这样的代码,这样您就不需要记住何时进行弃用。您的代码将为您大声抱怨(并且仅在测试中,而不是在生产中)

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


      更新:快进几年,今天我推荐。它从头开始设计,用于处理将数据库置于版本控制之下的情况,而无需将您绑定到特定的编程语言或VCS。

      有一个有趣的CPAN模块()。我已经使用过它,并且可以很好地处理项目的迁移


      每次迁移都会进入自己的目录。迁移是按排序顺序应用的,通常以数字前缀开始命名。迁移目录可以包含带有SQL或Perl的文件

      怎么样?它宣称自己是一个“数据库变更管理应用程序”

      自2012年4月27日起,它似乎仍然只支持SQLite。