<p>如果您需要有选择地(仅针对一个应用程序)重置耗时太长的迁移,<a href="https://stackoverflow.com/a/12823039/623735">this</a>对我有效。</p>
<pre><code>rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations
</code></pre>
<p>不要忘记手动还原其他应用程序上的任何<a href="http://south.aeracode.org/wiki/Dependencies" rel="nofollow noreferrer">dependencies</a>,方法是将<code>depends_on = (("<other_app_name>", "0001_initial"),("<yet_another_app_name>", "0001_initial"))</code>之类的行添加到<code><app-dir>/migrations/0001_initial.py</code>文件中,作为迁移类中位于<code>class Migration(SchemaMigration):</code>之下的第一个属性。</p>
<p>然后,您可以在其他环境中,按照<a href="https://stackoverflow.com/a/12823039/623735">this SO answer</a>进行<code>./manage.py migrate <app-name> --fake --delete-ghost-migrations</code>。当然,如果您伪造了delete或<code>migrate zero</code>,则需要使用类似<a href="https://stackoverflow.com/a/15799023/623735">this</a>的迁移手动删除任何剩余的db表。</p>
<p>一个更核心的选项是在实时部署服务器上<code>./manage.py migrate --fake --delete-ghost-migrations</code>,然后是一个[my]sqldump。然后在您需要迁移的、完全填充的数据库的环境中将其转储到[我的]sql中。南方亵渎,我知道,但为我工作。</p>