mysql - 如何在无迁移系统中处理数据库?

标签 mysql database git

我和我的团队目前正在使用 Git 来管理我们的版本控制。我们也想开始将它用于我们的无迁移系统,但我们遇到的问题是(MySQL)数据库中嵌入的绝对 URL。使用共享数据库会破坏我们的本地环境。另一个问题是在相同的表上执行的更改,尽管我们尚未认为该更改正确。

我们尝试通过 mysqldump 来完成此操作,然后通过 sed 替换所有绝对 URL,但这非常棘手。我们想知道是否有更好的方法来做到这一点。

我无法想象我们是第一批提出这个问题的人。但要么我的调查能力绝对是最差的,要么确实没有那么多关于这方面的信息。

有人能指出我正确的方向吗?

谢谢!

最佳答案

要更新数据库中的 URL,只需使用带有 REPLACE 函数的 UPDATE 查询即可。

UPDATE your_table SET url = REPLACE(url, 'http://example.com/', '/');

(执行此操作之前不要忘记进行备份。)

<小时/>

要将数据库架构从一个版本升级到另一个版本,我建议使用简单的升级脚本和稍微智能的启动器。 Gist 是每个开发人员都有自己的数据库,当他更改数据库架构时,他会使用 SQL 脚本来完成此操作。该脚本与源代码的更改一起提交。随后,当另一位开发人员获取新版本时,他会运行新的迁移脚本来升级数据库。

我在许多项目中都拥有使用这种方法的丰富经验。看看我的Changelog.sql工具。

关于mysql - 如何在无迁移系统中处理数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109149/

相关文章:

mysql - 查找源id只有一个dest id的行

php - 无法访问 SQL 数据库表,但可以访问同一数据库中的其他表

git - 错误 : Failed connect to github. com:8080;连接被拒绝

git - 为什么我 pull 的时候需要一直做 `--set-upstream-to`?

java - 在 Android 中将 Php 连接到 MySQLi

MySQL:长时间运行的 LEFT JOIN 查询性能

mysql - 最佳数据库,NOSQL 与 MySQL

PHP fatal error : Call to a member function diff() on a non-object in. .. 比较数据库中的日期时间

git - 如何使用 git 仓库设置 Dockerfile?

php - date_add 或 date_sub 速度差异?