我有一个Django应用程序,其中有很多过期的迁移。我想删除旧的迁移并重新开始。该应用程序有14个不同的“迁移”文件夹。下面是其中一些的样子:
从每个文件夹中删除 * 所有 * 内容安全吗?或者,我必须确保只删除 * 部分 * 文件吗?如果是,删除哪些文件?
kx7yvsdv1#
您应该永远不要在取消应用迁移之前删除它们,否则当您要应用新迁移时,这将是一场噩梦。要取消应用迁移,应执行以下操作:1.如果要在XXXX迁移后取消应用迁移,请使用python manage.py migrate your_app_name XXXX。否则,请使用python manage.py migrate your_app_name zero完全取消应用所有迁移。1.删除/migrations/pycache/下未应用的.pyc文件。1.删除migrations/下未应用的.py文件。现在,您可以创建新的迁移,而不会遇到任何麻烦。如果你想把所有的迁移压缩到一个文件中,那么按照上面的步骤删除所有的迁移,然后运行python manage.py makemigrations your_app_name创建一个迁移文件,然后运行python manage.py migrate your_app_name就可以了。
python manage.py migrate your_app_name XXXX
python manage.py migrate your_app_name zero
.pyc
.py
python manage.py makemigrations your_app_name
python manage.py migrate your_app_name
li9yvcax2#
如果您有一个生产数据库(或者任何您不能简单地删除和重新创建的数据库),那么答案是否定的,您不能安全地删除迁移。如果您没有任何永久数据库,那么是的,您可以删除所有迁移,运行python manage.py makemigrations --initial,它将基于您当前的模型创建新的迁移。此外,您还应该检查是否有任何迁移是手工编写的自定义数据迁移。如果有,您可能希望保留这些迁移。如果相关的.py文件仍然存在,通常可以安全地删除.pyc文件。你的第一个截图不是Django,看起来像是某种JS项目。
python manage.py makemigrations --initial
9udxz4iz3#
squashmigrations
kupeojn64#
在将之前提供的一个答案标记为被接受之后,下面是我学到的几件事的总结:
migrate
我遇到了一些很难修复的错误。下面是我修复它的方法:
Migrate
最终我成功地完成了所有迁移。我有一种感觉,我很幸运,上面的方法并不适用于所有的情况!我已经学到了很多关于Django和迁移的知识,将来会更加小心。
e0bqpujr5#
从第三个应用程序导入时:卸载它有2个步骤例如,可以使用'django_celery_beat'应用程序。
python .\manage.py migrate django_celery_beat zero
有做!!!我是 Django document。
wrrgggsh6#
如何重置迁移
如果你正在使用linux/unix操作系统,那么你可以激发这个命令。删除所有迁移目录。
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete
6条答案
按热度按时间kx7yvsdv1#
您应该永远不要在取消应用迁移之前删除它们,否则当您要应用新迁移时,这将是一场噩梦。
要取消应用迁移,应执行以下操作:
1.如果要在XXXX迁移后取消应用迁移,请使用
python manage.py migrate your_app_name XXXX
。否则,请使用python manage.py migrate your_app_name zero
完全取消应用所有迁移。1.删除/migrations/pycache/下未应用的
.pyc
文件。1.删除migrations/下未应用的
.py
文件。现在,您可以创建新的迁移,而不会遇到任何麻烦。
如果你想把所有的迁移压缩到一个文件中,那么按照上面的步骤删除所有的迁移,然后运行
python manage.py makemigrations your_app_name
创建一个迁移文件,然后运行python manage.py migrate your_app_name
就可以了。li9yvcax2#
如果您有一个生产数据库(或者任何您不能简单地删除和重新创建的数据库),那么答案是否定的,您不能安全地删除迁移。
如果您没有任何永久数据库,那么是的,您可以删除所有迁移,运行
python manage.py makemigrations --initial
,它将基于您当前的模型创建新的迁移。此外,您还应该检查是否有任何迁移是手工编写的自定义数据迁移。如果有,您可能希望保留这些迁移。
如果相关的.py文件仍然存在,通常可以安全地删除.pyc文件。
你的第一个截图不是Django,看起来像是某种JS项目。
9udxz4iz3#
1.如果你的意思是“以前应用过,不再需要,因为项目只需要最新版本的迁移”,你不想删除,而是用
squashmigrations
将它们删除,这样你的文件就减少到两个,init文件和初始迁移文件,这样你的项目仍然可以工作。1.如果删除意味着您不再需要这些文件,因为您已经对模型进行了大量更改,以前的迁移除了应用和未应用但从未使用之外,甚至都没有使用过,**也没关系,请转到步骤2并执行此操作,而不是手动删除这些文件。**当您在应用程序上逐个创建迁移时,您还创建了迁移依赖关系树,django是这样的。而且在某个时间点之后很难跟踪,如果你试图删除所有的东西,以为你可以轻松地创建新的迁移文件,相信我,作为一个有经验的人,它不是这样工作的。让django处理迁移压缩要简单得多,它优化了迁移,这意味着它也删除了最终状态下未使用的迁移。
更多信息请访问:https://docs.djangoproject.com/en/2.2/topics/migrations/#migration-squashing
kupeojn64#
在将之前提供的一个答案标记为被接受之后,下面是我学到的几件事的总结:
migrate
上抛出错误,这可能很难修复。我遇到了一些很难修复的错误。下面是我修复它的方法:
migrate
。Migrate
然后创建该表,然后用备份中的数据重新填充它。最终我成功地完成了所有迁移。
我有一种感觉,我很幸运,上面的方法并不适用于所有的情况!我已经学到了很多关于Django和迁移的知识,将来会更加小心。
e0bqpujr5#
从第三个应用程序导入时:
卸载它有2个步骤
例如,可以使用'django_celery_beat'应用程序。
第1步:清洁扫描床
步骤2:从INSTALLED_APPS中删除应用程序
有做!!!
我是 Django document。
wrrgggsh6#
如何重置迁移
如果你正在使用linux/unix操作系统,那么你可以激发这个命令。删除所有迁移目录。