ruby 整理Rails Postgres生产数据库

70gysomp  于 2024-01-07  发布在  Ruby
关注(0)|答案(1)|浏览(118)

我已经将一个列(称为score)从一个表(contract)移动到另一个表(weekly_record)。我为weekly_record创建了一个新的迁移。但是我“手动”将其从原始表中删除,特别是通过删除原始迁移中的列。
一切都很好,在发展中,因为我已经种子的数据回到一个新的本地数据库通过csv文件,确保'得分'保存到新的表,和旧列不存在,因为我删除了它的所有历史
然而在生产中,所有的旧记录仍然完好无损,我不想删除数据库和重新播种(除非我不得不!),也不确定处理它的最佳方法。
我看到以下选项:
1.我从控制台运行一个函数,将“score”从一个表复制到另一个表中,然后通过迁移删除旧的score列
1.我将本地迁移恢复为与生产数据库匹配,并正确地重写迁移
1.我通过更新的CSV导出/导入删除/创建和播种数据
1.还有别的吗
我仍然有点害怕使用生产数据库,我已经习惯了不断地擦除和重建本地数据库
谢谢

kjthegm6

kjthegm61#

Rails迁移系统是按顺序工作的。如果你在本地返回到以前的迁移并篡改它们,Rails将无法识别/知道迁移的运行顺序。
最好恢复您的迁移以匹配生产环境。由于您有一个种子文件,因此可以删除开发数据库并重新配置迁移以匹配生产环境。
之后,生成一个执行以下操作的新迁移:
1.在每周记录中增加新的一栏。
1.如果需要将任何分数数据从合同表迁移到相应的每周记录中,请编写代码进行处理。
1.从合同中删除旧的专栏。
如果您不喜欢在存储库中有一长串迁移文件,您可以在所有环境处于同步状态后删除它们。但是,返回并编辑过去的迁移通常会让您遇到现在面临的问题。

相关问题