Python Django迁移失败了
我有一个django/postgresql应用程序。无论何时运行最新的迁移,我都会收到以下错误: ValueError:为包(专业、标题)找到错误数量(0)的约束 我相信我需要定制迁移,但是我应该做什么改变呢 这就是迁移: 操作=[Python Django迁移失败了,python,django,postgresql,Python,Django,Postgresql,我有一个django/postgresql应用程序。无论何时运行最新的迁移,我都会收到以下错误: ValueError:为包(专业、标题)找到错误数量(0)的约束 我相信我需要定制迁移,但是我应该做什么改变呢 这就是迁移: 操作=[ migrations.AddField( model_name='package', name='speciality', field=models.ManyToManyField(related_nam
migrations.AddField(
model_name='package',
name='speciality',
field=models.ManyToManyField(related_name='specialities', to='speciality.Speciality', blank=True),
),
migrations.AlterField(
model_name='package',
name='title',
field=models.CharField(unique=True, max_length=50),
),
migrations.AlterUniqueTogether(
name='package',
unique_together=set([]),
),
migrations.RemoveField(
model_name='package',
name='speciality',
),
]
这是此型号的当前表配置:
sleepyfish=#\d软件包
表“public.package”
列|类型|修饰符---------------+--------------------------+------------------------------------------------------id |整数|非空默认值 nextval('package_id_seq'::regclass)在|时间戳处创建,带有 时区|非空更新|时间戳带时区|非空 空标题|字符变化(50)|非空描述 |文本|状态|布尔值
|非空价格|数字(8,2)|非空 专业| id |整数|索引: “package_pkey”主键,btree(id) “package_speciality_id_3aeb5c97679442e4_uniq”唯一约束,btree(speciality_id,title) “package_66db61fe”btree(speciality_id)外键约束: “package_speciality_id_4255b58fe1ae00c0_fk_speciality_id”外键(speciality_id)最初引用可延迟的speciality(id) 延期提交人: 表“claimedpackage”约束“claimedpackage\ U package\ U id\ U 9e1da358fbb9a46\ U fk\ U package\ U id”外键 (package_id)引用最初可延迟的包(id) 表“包服务”约束“包服务包id”3b0ea08bfcd8da76\U fk\U包id”外部 KEY(package_id)引用最初可延迟的package(id)
看起来您遇到了有文档记录的Django错误。该错误是(并且正确地是),因此不幸的是,没有干净的解决方案来解决该问题 数据库定义中的unique together约束显示为
"package_speciality_id_3aeb5c97679442e4_uniq" UNIQUE CONSTRAINT,
btree (speciality_id, title)
如果要删除此约束,则需要确保迁移文件中的unique\u-ather
定义与数据库定义一致。请尝试用以下内容替换alteruniqueather
行:
migrations.AlterUniqueTogether(
name='package',
unique_together=set([('speciality_id', 'title')]),
),
以防有人遇到和我一样的问题:
我有一个多租户系统,其中每个租户都有自己的模式,
public
模式保留为空
当Django试图检查数据库的当前状态以删除与历史约束匹配的真正唯一约束时,它只查看public
架构内部,忽略数据库设置中选项
中设置的架构信息
关于这个问题,有几张票尚未公开,看不到真正的解决方案:和
您可以随时编写自己的数据库后端来避免此问题,或者向Django!提交拉取请求。如果来自arjun27
的答案无法解决您的问题,则这是另一种选择
今天,当我试图从Django模型中一起删除unique_时,我遇到了同样的问题(与问题完全相同的关键字)。我使用的是Django 1.11
阅读arjun27
中的文档和参考资料,据我所知,迁移过程将使用上述案例,尝试在Postgresql上为字段(专业,标题)
找到唯一的矛盾
我尝试查找表上的唯一约束,但未找到
因此,我直接从SQL控制台创建唯一约束
ALTER TABLE package ADD UNIQUE (speciality, title)
然后我重新运行迁移
希望有帮助。您是否在默认情况下将某个值定义为特殊值?能否显示型号的代码。py
?