Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
在大型MySQL数据集中使用Laravel重新植入生产不良数据的代价高昂的过程_Mysql_Laravel 4_Data Integrity_Database Theory_Laravel Seeding - Fatal编程技术网

在大型MySQL数据集中使用Laravel重新植入生产不良数据的代价高昂的过程

在大型MySQL数据集中使用Laravel重新植入生产不良数据的代价高昂的过程,mysql,laravel-4,data-integrity,database-theory,laravel-seeding,Mysql,Laravel 4,Data Integrity,Database Theory,Laravel Seeding,我正在寻找一种更明智的方法来纠正大型种子数据库中的错误。解决方案越明智,就越受欢迎(可以自由质疑工作工具,即关系数据库)。我不能截断数据并重新设定所有值的种子。尤其是当数据完整性发挥作用时。这需要对开发人员的错误具有足够的健壮性,而不必进行整个重新种子设定来解释错误。对于我的种子数据集来说,Migrations/MySQL/relationaldbs似乎不够灵活。这就是我知识缺失的地方 情景: Laravel项目,在迁移类中使用种子(JSON),请参阅:[Laravel: 生产数据的迁移和种子

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

情景:

  • Laravel项目,在迁移类中使用种子(JSON),请参阅:[Laravel: 生产数据的迁移和种子设定][1]

    [1] :

    • MySQL数据库10k JSON对象表示足球运动员,包含10个值,例如姓名、体重、身高、球队、出生日期。对象进行迭代,然后使用AI id插入数据库
问题: 由于开发人员的错误,MySQL的“height”列最初是int类型,而不是float,所以所有高度都被四舍五入到2m

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

澄清一下:我从一些没有ID的JSON对象中获取种子。各个足球联赛都有几个JSON文件,因此我以模块化的方式(即,当我插入新球员时)为这些文件添加种子。如果需要进行更改,JSON中的对象和数据库中的对象之间就没有完整性。我曾经考虑过使用我必须创建一个复合键的值,(?),但它仍然感觉数据非常脆弱,并且容易发生开发人员错误,我需要一种合理管理这种数据的方法,我觉得Laravel migrations/seeds不提供这种方法,特别是因为您仅限于根据时间戳值运行迁移(您不能指定回滚之前运行的某个迁移文件)。如果存在数据库的“源代码管理”可能是个好主意。请注意,这篇文章被标记为“数据库理论和数据完整性”,我知道我可以重新设定种子,但这可能会占用我工作日的几个小时


干杯。

所以只要运行一个脚本并用新数据更新每一行就行了?10000行不是很多数据…?我的数据每天增长约10k行。它需要足够长的时间来为它们播种。但是你只需要修复原始记录,而不是新记录,所以记录是否持续增长无关紧要-它们都应该是你建议的解决方案对于一个不太复杂的问题来说,这些都是合理的。让我强调一下“对象经过迭代,然后用AI id插入到DB中。”因为JSON对象没有id(它们有:名称、年龄、身高、体重、dob),所以MySQL为它们分配了一个id。这些对象以模块化的方式播种——单独的文件(它们通过Python web刮板填充).这意味着我需要一种确保“高度”的方法这就是为什么后标签是数据完整性和数据库理论的原因。如果我把X-1000玩家添加到错误的团队中。没有办法跟踪、回复……我同意@ SHIFIFTExchange,你的问题似乎比播种更能更新。但是,如果你感觉到关系数据库的局限性,你可以考虑其他类型的数据库。示例-面向对象。