Database 使用dbdeploy部署数据库时控制数据

Database 使用dbdeploy部署数据库时控制数据,database,version-control,phing,dbdeploy,Database,Version Control,Phing,Dbdeploy,我们与我们的PostgreSQL数据库一起工作,这是一种很好的工作方式。在我们开始使用数据库之后,我对它的版本并没有太多问题,除了一个令人不安的疑问:我们如何控制数据库包含的数据 现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我希望有生产数据,如实际有效数据。当然,我可以编写另一个delta来截断测试数据并插入实际数据,但不知何故,这感觉既笨拙又麻烦,因为delta中唯一的语言是SQL。在编写这样的增量时,处理序列和确保外键关系正确是一件非常痛苦的事情 因此,我认为编写一个

我们与我们的PostgreSQL数据库一起工作,这是一种很好的工作方式。在我们开始使用数据库之后,我对它的版本并没有太多问题,除了一个令人不安的疑问:我们如何控制数据库包含的数据

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

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


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

您是对的,测试数据应该从delta中删除,就像测试不应该在生产系统上进行一样。你用什么做测试?Phpunit,硒。。。?你使用php框架吗


无论如何,最好的方法可能是使用可能已经随您使用的任何工具一起提供的东西。例如,symfony1.x具有相当好的夹具管理。对于测试PHP代码,PHPUnit是一个事实上的标准,它附带了一些夹具管理。请查看PHPUnit文档,了解它如何处理数据集的更多信息:

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