【发布时间】:2020-10-17 12:19:59
【问题描述】:
我在解决迁移冲突时遇到问题。通常,当这些事情发生时,我们可以使用“python manage.py makemigrations --merge”将文件合并在一起。
但是,这一次我们收到了Could not find common ancestor of {'0001_initial', '0005_removed_custom_form_model_changed_name_to_staff_reports'} 错误。几个小时后,我们在修复它方面没有任何进展。
在我们删除了一个应用并创建了一个新应用来替换它之后,问题就出现了。
以下是我已经尝试过的事情:
-
使用“python manage.py
”返回到先前的迁移。 (这样做会显示我试图避免的相同合并冲突) -
恢复已删除应用的apps.py文件并将应用重新添加到installed_apps中,然后再次使用“python manage.py
”进行回溯。 (这样做会导致相同的合并冲突错误)
我自己对迁移不太熟悉,所以我很快就没有想法了,不幸的是,在这种情况下删除数据库不是一个选项。
这里是有问题的迁移文件:
0001_initial.py:
import django.contrib.postgres.fields.jsonb
import django.core.serializers.json
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('properties', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='CustomFormDeclarations',
fields=[
('deleted', models.DateTimeField(editable=False, null=True)),
('date_entered', models.DateTimeField(auto_now_add=True)),
('last_update', models.DateTimeField(auto_now=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('name', models.CharField(db_index=True, max_length=100)),
('fields', django.contrib.postgres.fields.jsonb.JSONField(default=list, encoder=django.core.serializers.json.DjangoJSONEncoder)),
('user_type', models.CharField(choices=[['', 'Choose a User Type'], ['admin', 'Admin'], ['coorporate', 'Coorporate'], ['onsite_manager', 'Onsite Manager'], ['onsite_staff', 'Onsite Staff'], ['maintenance', 'Maintenance']], db_index=True, max_length=100)),
],
options={
'permissions': [('view_customforms', 'Can view custom forms')],
},
),
migrations.CreateModel(
name='CustomFormSubmissions',
fields=[
('deleted', models.DateTimeField(editable=False, null=True)),
('id', models.AutoField(primary_key=True, serialize=False)),
('values', django.contrib.postgres.fields.jsonb.JSONField(default=list, encoder=django.core.serializers.json.DjangoJSONEncoder)),
('last_updated', models.DateTimeField(auto_now=True)),
('date_entered', models.DateTimeField(auto_now_add=True)),
('form', models.ForeignKey(db_column='form_id', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submissions', to='custom_forms.CustomFormDeclarations')),
('property', models.ForeignKey(db_column='property_id', on_delete=django.db.models.deletion.CASCADE, to='properties.Property')),
],
options={
'abstract': False,
'default_permissions': ('add', 'change', 'delete', 'view', 'undelete'),
},
),
]
0005_removed_custom_form_model_changed_name_to_staff_reports
从 django.db 导入迁移
class Migration(migrations.Migration):
dependencies = [
('custom_forms', '0004_removed_custom_form_model_changed_name_to_staff_reports'),
('users', '0008_removed_custom_form_model_changed_name_to_staff_reports'),
]
operations = [
migrations.DeleteModel(
name='CustomFormDeclarations',
),
migrations.DeleteModel(
name='CustomFormSubmissions',
),
]
【问题讨论】:
-
你删除了哪个应用?是不是迁移
dependencies之一? -
我们删除了 custom_forms(这是依赖项之一)。我试图恢复应用程序(只需创建另一个 app.py),但错误没有解决。
标签: python django database migration