mysql - 如何在生产应用程序上运行测试而不留下痕迹?
问题描述
我正在对使用 PHP+MySQL 开发的 Web 应用程序进行一些更改,在测试开发中的所有内容后,我已将其上传到生产环境。但是,我想确保一切正常运行,我可能忘记了从开发到生产的一些更改(数据库连接等)。
如果我运行一些在 MySQL 数据库中插入新行的更改,删除新寄存器并更新 AUTO_INCREMENT 值(以便自动 id 不会显示测试已完成和删除),足以不留下任何痕迹考试?
也许这个问题应该更笼统,我怎样才能测试一旦在生产中一切都运行完美而不留下那些“足迹”?
谢谢!
解决方案
第一个答案当然是使用工具来比较它们,这样就不会忘记任何东西。但是,如果由于某种原因这是不可能的或不可行的,这就是我要做的:
我猜你有以某种方式更新数据库的查询形式的变化。在让其他人进行测试之前,您要确保一切都按预期工作。
然后对生产进行备份并将其还原到新数据库中,现在您与生产中的相同。然后运行您的更新查询(您想在生产中运行)并针对这个新数据库运行您的代码。这将与更改后的生产完全相同。如果它有效,您可以在生产中安全地做同样的事情,或者如果已经进行了更改,则让用户进入。
如果这不是您想要的,并且由于某种原因您需要在实际的生产服务器中运行,那么我们无能为力。您的服务器可能会做一些我们不知道的事情。
插入新行(如果您知道所有已更新的行,则可以通过将 auto_increment 重置为正确值来删除和修复)触发器(当您添加/修改/删除时)数据触发器可能会更改数据库中的其他数据。删除记录,无法撤消
您还存在代码可能因此更改(或未知错误)而崩溃的风险,这会导致方法在完成之前退出,因此某些行可能已更改,但其他行不会更改。
如果不完全了解您的系统,就无法了解所有这些。
另一种方法当然是现在进行备份并测试您的东西,然后删除生产并使用备份恢复它。但这不是我自己会尝试或推荐其他人做的事情......
推荐阅读
- angularjs - 在 AngularJS 中获取 JSON 数据,例如 [{"key":"[{'key': 'value ','key': 'value '}]"}] 并显示在表格中
- android - 在android中绘制自定义可绘制形状
- python - 'tiny.weights' 不显示输出 - YOLOv3
- hyper-v - 使用来自主机的 Hyper V ping 上的静态 IP 失败
- r - 在 R 3.4.4、Linux Mint Sonya 上安装 swirl 时出现问题
- java - Java - 误解 ceil 和 floor 方法
- node.js - Angular App 作为 Hyperledger Fabric 组织的客户端应用程序
- php - PHP 配置并 make & make install 后如何添加 imap 模块?
- css - 未找到此依赖项:
- javascript - 将所有点替换为单个