我继承了一个非常糟糕的数据库。基本上如下:
我并不担心保留过去的迁移历史记录或类似内容,但我确实需要保留当前数据库中的数据。我正在寻找一种方法来声明当前数据库状态为初始状态并从那里向前移动。如果有必要,我可以修改模型,以便数据库表与当前模型匹配,因为我认为这是开始所必需的。
我已经乱搞了几个小时了,我很感激任何建议让你理顺这个。
附加说明:
答案 0 :(得分:1)
django 1.6 with South的说明
我建议下载数据库的转储(或在架构中)并使用sqllite在本地计算机上创建一个新的数据库。
然后删除所有应用中的所有现有/migrations
文件夹
然后删除数据库表south_migrations
现在禁用所有不在数据库中的“新”模型更改
然后再次进行初始迁移
./manage.py schemamigration myapp --initial
然后假装一切,因为结构已经存在
./manage.py migrate --fake
现在,您的迁移与生产数据库保持同步。
现在重新启用新模型更改,然后创建迁移每个应用程序
./manage.py schemamigration myapp
然后迁移到新的更改
./manage.py migrate
注意:在您的服务器和开发计算机上,您需要确保在创建任何新迁移之前还删除“迁移”文件夹中的任何旧.pyc文件。
根据e4c5上面的评论,当你转到django 1.7 / 1.8时,你将不得不再做一些这些步骤(因为南方已经在1.7中集成到了Django中),所以你可能要考虑升级到1.7以上同时(虽然这不一定是一个微不足道的升级......)。