【问题标题】:What is the best practice to fix bad data in one of the table in the database?修复数据库中一个表中的错误数据的最佳做法是什么?
【发布时间】:2016-06-08 06:37:00
【问题描述】:

问题

我的数据库中的一个表中有一个错误数据,它需要我截断一个表。 我可以毫无问题地做到这一点,但是我的团队、QA 和其他开发人员呢?他们已经拥有代码和不良数据。他们是否也需要手动截断表格?人们通常如何处理这样的事情?


解决方案

如果我通过迁移脚本截断该表,这是一个的主意吗? 有什么不好的吗? 然后,我的整个团队只需要运行:php artisan migrate


我愿意接受任何关于此的建议。

【问题讨论】:

  • 不良数据是什么意思?它是如何产生的?
  • 这样的坏数据:例如。错误的图像路径将是其中之一。现在,我找到了一种更好的方法来存储我的图像,我需要对这些路径进行一些调整。话虽如此,那些旧的图像路径已弃用。现在,问题来了,当我的同事加载页面时,他们不会看到正确的图标。除非他们截断表格并开始上传新表格,否则他们将继续拥有良好的图像路径。
  • 为什么不能只对不良数据使用UPDATE 将不良图像路径(例如)设置为较新的固定图像路径,然后通知您的团队复制您的主表到他们的子表?
  • 如果您不喜欢迁移的想法,我认为播种机就是为此而生的。尽管迁移具有“加号”,但如果适用于您,您可以回滚它。使用迁移或播种机真的取决于您。

标签: php laravel laravel-5 laravel-5.1 database-migration


【解决方案1】:

如果您使用的是 mysql,您可以使用 mysqldump 转储一份正确数据的副本,并让您的团队成员使用它来覆盖他们的数据库。

如果是 sqlite,就让他们复制 db 文件。

当然,如果您不介意编写一些代码,您可以使用 laravel 的 db seeder 来完成这项工作。

laravel 的迁移文件用于定义和更改架构,而不是数据。

我个人使用mysqldump方法,因为它简单又懒惰,管理员也很容易学会。

【讨论】:

  • 非常感谢您的回答。你的第一点,你提到了let your team member use it to overwrite their database。看我试图避免让他们这样做。我希望我的网站能够解决这个问题,我不介意编写和额外的迁移脚本来实现这一点,但既然你也提到了,laravel migration 并不意味着用于数据。还有什么提示吗?
  • laravel 的 seeder 用于数据变更,请参考laravel.com/docs/seeding。必须小心处理迁移和播种工具。例如,如果您两次运行相同的播种机,您最终会得到重复的数据。如果在生产服务器上回滚迁移,则会丢失所有数据。如果您不时使用 mysqldump,除了日常备份之外,您还会自动获得额外的备份 :)
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 2010-09-05
  • 2016-03-29
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多