【问题标题】:controlling data when deploying databases with dbdeploy使用 dbdeploy 部署数据库时控制数据
【发布时间】:2011-09-15 11:50:26
【问题描述】:

我们与Phingdbdeploy task 合作为我们的PostgreSQL 数据库执行version control,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本并没有太多问题,除了一个令人烦恼的疑问:我们如何控制数据库包含的数据?

现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我想要生产数据,例如实际有效数据。当然,我可以编写另一个 delta 截断 testdata 并插入实际数据,但不知何故,这感觉很笨重,因为 delta 中唯一的语言是 SQL。在编写这样的 delta 时,处理序列并确保外键关系正确是一件非常痛苦的事情。

所以我认为编写一个从 CSV 文件导入数据的 PHP 脚本可能是有意义的。这实际上会起作用,直到有另一个数据库更改重命名列,这将使 PHP 文件无用。当然,这很容易通过更新脚本以合并数据库更改并重新运行脚本来解决,但这很容易出错,这就是我首先开始使用 dbdeploy 的原因。

所以,我的问题是;在部署更改时如何处理数据,或者更准确地说:如何插入生产环境所需的数据?

【问题讨论】:

  • 不应该将生产中的数据通过某种管理界面插入到干净的数据库中吗?我认为 DBDeploy 的想法是使数据库保持最新状态,而无需删除任何生产数据。对于测试,使用一些单独的夹具管理可能比将测试数据保存在增量中更好。 Phpunit 或一些 php 框架有可用的夹具管理。
  • 你可能是对的。虽然我不认为整个管理界面是一个好主意;我真的不喜欢那样,因为它太密集了。但不将测试数据保存在 delta 中可能是个好主意。将其发布为答案,我会接受。
  • 很抱歉,我没有完全理解问题陈述。有一些 youtube 视频吗?请提供任何链接

标签: database version-control phing dbdeploy


【解决方案1】:

您说得对,应该将测试数据排除在增量之外,就像不应该在生产系统上进行测试一样。你用什么来测试? Phpunit,硒,...?你使用任何 php 框架吗?

无论如何,最好的方法可能是使用您碰巧使用的任何工具可能已经附带的东西。例如 Symfony 1.x 有相当好的夹具管理。对于测试 PHP 代码,PHPUnit 是一个事实上的标准,它带有一些夹具管理。尝试查看 PHPUnit 文档以获取有关它如何处理数据集的更多信息:http://www.phpunit.de/manual/current/en/database.html#understanding-datasets-and-datatables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2011-11-21
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多