Django在应用程序中复制迁移

1tu0hz3e  于 2023-05-23  发布在  Go
关注(0)|答案(2)|浏览(173)

Django一直在为我的应用程序进行重复迁移。在更改模型之前,我运行过makemigrationsmigrate。修改后,我再次运行makemigrations来为更新后的模型进行迁移,我得到了以下错误:

CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0001_initial, 0001_initial 3 in sessions; 0002_remove_content_type_name 3, 0002_remove_content_type_name, 0001_initial 3 in contenttypes; 0002_alter_permission_name_max_length 3, 0010_alter_group_name_max_length 3, 0007_alter_validators_add_error_messages 3, 0006_require_contenttypes_0002 3, 0005_alter_user_last_login_null 3, 0001_initial 3, 0008_alter_user_username_max_length 3, 0009_alter_user_last_name_max_length 3, 0011_update_proxy_permissions, 0011_update_proxy_permissions 3, 0004_alter_user_username_opts 3, 0003_alter_user_email_max_length 3 in auth; 0003_logentry_add_action_flag_choices 3, 0002_logentry_remove_auto_add 3, 0003_logentry_add_action_flag_choices, 0001_initial 3 in admin).

要修复它们,请运行'python manage.py makemigrations --merge'
运行makemigrations --merge不起作用:ValueError: Could not find common ancestor of {'0002_remove_content_type_name', '0002_remove_content_type_name 3', '0001_initial 3'}
应用中有许多重复的迁移,我还没有触及(auth,admin等):

admin
 [ ] 0001_initial 3
 [X] 0001_initial
 [ ] 0002_logentry_remove_auto_add 3
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
 [ ] 0003_logentry_add_action_flag_choices 3
auth
 [ ] 0001_initial 3
 [X] 0001_initial
 [ ] 0002_alter_permission_name_max_length 3
 [X] 0002_alter_permission_name_max_length
 [ ] 0003_alter_user_email_max_length 3
 [X] 0003_alter_user_email_max_length
 [ ] 0004_alter_user_username_opts 3
 [X] 0004_alter_user_username_opts
 [ ] 0005_alter_user_last_login_null 3
 [X] 0005_alter_user_last_login_null
 [ ] 0006_require_contenttypes_0002 3
 [X] 0006_require_contenttypes_0002
 [ ] 0007_alter_validators_add_error_messages 3
 [X] 0007_alter_validators_add_error_messages
 [ ] 0008_alter_user_username_max_length 3
 [X] 0008_alter_user_username_max_length
 [ ] 0009_alter_user_last_name_max_length 3
 [X] 0009_alter_user_last_name_max_length
 [ ] 0010_alter_group_name_max_length 3
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
 [ ] 0011_update_proxy_permissions 3
contenttypes
 [ ] 0001_initial 3
 [X] 0001_initial
 [X] 0002_remove_content_type_name
 [ ] 0002_remove_content_type_name 3
database
 (no migrations)
sessions
 [X] 0001_initial
 [ ] 0001_initial 3

据我所知,唯一应该受到影响的应用程序是database。为什么Django要做这些重复的迁移?有什么办法能让我摆脱这些吗?或者应用它们,使它们不再阻塞?我怎样才能确保这种事不会再发生?

hzbexzde

hzbexzde1#

有时候,如果你有选择的话,最简单最快的方法就是...

  • 删除移植文件。
  • 删除整个数据库。
  • 再次运行“python manage.py makemigrations”
  • 再次运行“python manage.py migrate”

或者...如果您在生产环境中有一个包含数据的数据库,并且无法重置:

  • 检查最新生产版本
  • 删除迁移文件(直到此版本)。
  • 删除整个本地(sqlite)数据库。
  • 再次运行“python manage.py makemigrations”
  • 再次运行“python manage.py migrate”

重要的...将/migrations/文件夹复制到某个位置以恢复文件(如有必要)。

ncecgwcz

ncecgwcz2#

事实证明,这些副本不是由Django创建的,而是由其他进程创建的。完全删除我的环境并重新安装所有依赖项很有帮助。删除迁移也会起作用。

相关问题