django南postgresql外键约束需要一行id为零?

时间:2014-07-11 10:18:11

标签: database django postgresql foreign-keys django-south

我使用Django和South作为Postgresql数据库的数据迁移工具。

我遇到的是这样的情况:如果我在模型中添加一个字段,该字段是与另一个模型相关的外键。我使用

生成迁移文件

./manage.py schemamigration users --auto

但是如果尝试

则发生错误

./manage.py migrate users 00xx

生成文件。

django.db.utils.IntegrityError: insert or update on table "users_userlikemessage" violates foreign key constraint "message_id_refs_id_57ff7c7c"

DETAIL:  Key (message_id)=(0) is not present in table "message_article".

我为解决问题所做的只是从pdAdmin工具转到message_artile模型的最后一行,并将行的id更改为0,然后重新运行migrate命令

虽然这解决了迁移问题,但由于现有的FK约束,我无法将0 id更改回原来的状态。

所以,我的问题是:

  1. 在建立FK约束之前,0值pk必须存在的原因是什么?
  2. 有没有更好的方法来解决这个问题?
  3. 这个现有的FK约束是否会对将来使用数据库产生副作用?
  4. 在Postgresql数据库中拥有0有价值的pk是否有意义?

0 个答案:

没有答案