Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库中的版本控制开发测试记录_Database_Version Control - Fatal编程技术网

Database 数据库中的版本控制开发测试记录

Database 数据库中的版本控制开发测试记录,database,version-control,Database,Version Control,我在数据库中有一些表和记录,用于手动测试我的(PHP)代码。假设,我想共享这些记录和表结构(例如:与其他开发人员共享);如果一些模型改变或添加了新表,每个人都会知道 您如何将此需求集成到您的开发过程中?我的想法是在每次提交时将DB转储到一个文件中,并在脚本确保修改后提交该文件。在更新时,也更新这个文件并重新加载另一个开发数据库。这可以通过eclipse的外部工具功能实现,但我觉得这有点不成熟 如果数据库中的测试数据应该是版本控制/共享的,您如何处理它?处理测试数据的方法有很多,但我们使用的过程如

我在数据库中有一些表和记录,用于手动测试我的(PHP)代码。假设,我想共享这些记录和表结构(例如:与其他开发人员共享);如果一些模型改变或添加了新表,每个人都会知道

您如何将此需求集成到您的开发过程中?我的想法是在每次提交时将DB转储到一个文件中,并在脚本确保修改后提交该文件。在更新时,也更新这个文件并重新加载另一个开发数据库。这可以通过eclipse的
外部工具
功能实现,但我觉得这有点不成熟


如果数据库中的测试数据应该是版本控制/共享的,您如何处理它?

处理测试数据的方法有很多,但我们使用的过程如下:

  • 维护一个项目(Visual Studio支持数据库项目)或至少一个包含数据库脚本的文件夹结构
  • 构建一个能够获取最新脚本并从中创建数据库的工具
  • 将数据导出为脚本运行后可以执行的某种格式(INSERT语句或其他)
显然,随着数据库的更改,您需要维护数据,这可能意味着在添加新的非空列时重构数据文件。但是,一旦您有了这个系统,您的所有开发人员都可以轻松地从我们的源代码管理中获取所有SQL,并轻松地使用测试数据生成自己的数据库


替代方法是为所有开发人员维护一个开发数据库,我们也有这个数据库。这样,您就有了一个开发数据库的“黄金”副本,其中包含最新的模式更改和测试数据。

测试数据与测试本身一样是代码的一部分,因此它们肯定应该处于版本控制中

由于测试数据通常不会更改每个提交,而是仅为适应新的测试或模式而更新,因此这是手动完成的,主要是为了防止转储通过测试(使用测试数据)更改的数据。但是,您可以编写转储脚本,或者在构建软件中创建目标


我们这样做的方式是使用ant和合并文件。合并文件是SQL中数据文件的更新(ALTERTABLE、INSERT、update语句等)。ant目标使用测试数据的最新版本进行初始化,并在该版本上执行合并文件,并转储新数据。这样的话,变化是什么总是很清楚的

SQL Data Compare Pro并排运行SQL Compare,以允许编写静态数据和模式,并将其存储在源代码管理中。它通过使用DML(INSERT)语句保存.sql文件来实现这一点。除了编写文件脚本外,SQL Data Compare Pro还可以将这些文件部署到数据库中

免责声明:我是Red Gate SQL比较工具的产品经理。

您可以用它来解决此问题

DataGrove跟踪对整个数据库(模式+数据)的更改,并允许您在任何时间点保存版本。通过一个简单的操作,您可以恢复到任何版本,并快速拥有一个完全可操作的数据库

您可以使用DataGrove为每个版本或应用程序保存一个版本。您还可以为您拥有的每个测试用例保存一个版本。如果您有一个构建服务器,它可以从DataGrove加载DB并自动运行每个测试用例


DataGrove还允许生成数据库的多个独立的虚拟副本。因此,您可以在存储库中拥有一个gold DB(正如@Ed所建议的),以及所有最后的gold副本。如果您需要在旧版本中修补代码,您可以从存储库生成一个与该版本匹配的虚拟副本。

您是否使用任何特定的构建/打包工具,如ant for java或make?@extraneon:是的,我使用。(蚂蚁+十字军控制)