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

标签 database git version-control postgresql

我正在做一个 web 应用程序,我需要为一些重大更改创建一个分支,问题是,这些更改需要更改数据库架构,所以我想将整个数据库也放在 git 下.

我该怎么做?是否有一个特定的文件夹可以保存在 git 存储库下?我怎么知道是哪一个?我如何确定我放置的是正确的文件夹?

我需要确定,因为这些更改不向后兼容;我不能搞砸。

我的数据库是 PostgreSQL

编辑:

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

必须有更好的方法。

更新:

好的,所以没有更好的方法,但我仍然不太相信,所以我会稍微改变一下问题:

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

sqlite 对 git 友好吗?

因为这只是开发环境,我可以选择任何我想要的数据库。

编辑2:

我真正想要的不是跟踪我的开发历史,而是能够从我的“新的彻底改变”分支切换到“当前稳定分支”并且能够修复一些错误/问题等,与当前的稳定分支。这样当我切换分支时,数据库会自动神奇地与我当前所在的分支兼容。 我不太关心实际数据。

最佳答案

进行数据库转储,然后对其进行版本控制。这样它就是一个平面文本文件。

我个人建议您保留数据转储和模式转储。通过这种方式,使用 diff 可以很容易地看到架构在不同版本之间发生了什么变化。

如果您要进行重大更改,您应该有一个辅助数据库,您可以对其进行新架构更改,而不是触及旧数据库,因为正如您所说,您正在创建一个分支。

关于database - 如何将数据库置于 git(版本控制)之下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39753941/

相关文章:

Git + 大数据集?

version-control - teamcity 中的 mercurial VCS 证书验证失败

Git Svn 获取更多修订

version-control - 仅从另一个分支 merge 一个变更集

mysql - 具有不同模式和表结构的新升级应用程序中mysql的数据迁移工具

php - 根据另一个表中的关联字符串查询和排序以分号分隔的 id 列表的最有效方法是什么?

git - 暂存删除的文件

git - 如何将我的新分支移动到 master 分支中的最新提交?

sql - 如何在 Sqlite 中使用时间序列,以及快速的时间范围查询?

database - AWS RDS - 降级数据库实例类会导致现有数据丢失吗?