1

我正在寻找一种更明智的方法来纠正大型种子数据库中的错误。解决方案是受欢迎的,他们是理智的(随意质疑工作的工具,即关系数据库)。我不能截断数据并重新设定所有值。尤其是当数据完整性发挥作用时。这需要足够健壮以应对开发人员错误,而无需进行整个重新播种来解决错误。对于我的种子数据集,迁移/MySQL/关系数据库似乎不够灵活。这就是我缺少知识的地方。

设想:

  • Laravel 项目,在迁移类中使用种子 (JSON),请参阅:[Laravel : Migrations & Seeding for production data][1]

    [1]: Laravel:生产数据的迁移和播种

    • MySQL 数据库 10k JSON 对象代表足球运动员,包含 10 个值,例如姓名、体重、身高、球队、出生日期。对象迭代,然后插入到带有 AI id 的数据库中。

问题:由于开发人员的错误,MySQL 'height' 列最初是 int 类型而不是 float,因此所有高度都四舍五入为 2m。

通过迁移,我将类型更改为浮动,现在所有高度值都需要通过重新设置来更改,因为它们仍然都是 2m(而不是 1.76)。我们需要考虑时间和成本,必须将数千个 JSON 对象重新植入 MySQL 以更改列上的值,同时保持数据完整性,因为来自 JSON 的对象在 MySQL 插入时被分配了它们的唯一 ID。

澄清一下:我从中播种了一些无 ID 的 JSON 对象。各个足球联赛有几个 JSON 文件,所以我以模块化方式播种这些文件,即当我插入新球员时。如果我需要进行更改,JSON 中的对象与数据库中的对象之间不存在完整性。我曾考虑过使用必须创建复合键的值,(?)但仍然感觉数据如此脆弱且容易出现开发人员错误,并且我需要一种理智地管理它的方法,我不觉得 Laravel 迁移/种子提供,特别是因为您只能根据时间戳值运行迁移(您不能指定回滚您运行的某个迁移文件较早)。如果存在的话,数据库的“源代码控制”也许是一个好主意。请注意,该帖子已标记为database-theorydata-integrity,我知道我可以重新播种,但这可能需要我工作日的几个小时。

干杯。

4

0 回答 0