猿问
下载APP

如何将数据库置于git(版本控制)下?

我正在做一个Web应用程序,我需要对一些主要更改进行分支,事实是,这些更改需要更改数据库架构,因此我也希望将整个数据库置于git下。


我怎么做?我可以在git存储库下保存一个特定的文件夹吗?我怎么知道哪一个?如何确定要放入正确的文件夹?


我需要确定,因为这些更改不是向后兼容的。我无力承担。


我的数据库是PostgreSQL


编辑:

有人建议进行备份,并将备份文件置于版本控制下而不是数据库中。老实说,我发现这真的很难下咽。


一定有更好的方法。


更新:

好的,因此没有更好的方法,但是我仍然不太确信,所以我将稍微改变一下问题:


我想将整个数据库置于版本控制下,我可以使用哪个数据库引擎,以便可以将实际数据库置于版本控制下而不是其转储?


sqlite是git友好的吗?


由于这只是开发环境,因此我可以选择所需的任何数据库。


编辑2:

我真正想要的不是跟踪我的开发历史,而是能够从我的“新的根本性变化”分支切换到“当前稳定的分支”,并能够例如使用当前版本修复一些错误/问题等。稳定分支。这样,当我切换分支时,数据库会自动与我当前所在的分支兼容。我不太在乎实际数据。


墨色风雨
浏览 65回答 3
3回答

蝴蝶不菲

进行数据库转储,然后进行版本控制。这样,它是一个纯文本文件。我个人建议您同时保留数据转储和架构转储。通过使用diff的这种方式,可以很容易地看到模式在修订之间的变化。如果要进行大的更改,则应该有一个辅助数据库,您可以在其中更改新的架构,而不要触摸旧的数据库,因为正如您所说的,在进行分支。

千万里不及你

查阅Refactoring Databases(http://databaserefactoring.com/),了解一堆很好的技巧来保持数据库与代码更改的同时进行。可以说您在问错误的问题。而不是将数据库放入git,您应该将更改分解为可验证的小步骤,以便您可以轻松迁移/回滚架构更改。如果您希望具有完全的可恢复性,则应考虑归档postgres WAL日志,并使用PITR(时间点恢复)将事务回放/转发到特定的已知良好状态。

炎炎设计

我开始想到一个非常简单的解决方案,不知道为什么我以前没有想到过!复制数据库(模式和数据)。在new-major-changes的分支中,只需将项目配置更改为使用新的重复数据库即可。这样,我可以切换分支而不必担心数据库架构更改。编辑:通过重复,我的意思是创建另一个具有不同名称的数据库(例如my_db_2);不做转储或类似的事情。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答