【发布时间】:2012-12-11 00:23:51
【问题描述】:
我有这个models.py
from django.db import models
from django.contrib.auth.models import User
class Service(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=800, blank=False)
service = models.CharField(max_length=2000, blank=False)
def __unicode__(self):
return self.name
class ServiceCheck(models.Model):
service = models.ForeignKey(Service)
check_status = models.CharField(max_length=80)
check_time = models.DateTimeField()
当我对 postgresql 运行 syncdb 时,它会出现错误:
~/dev-md> sudo python manage.py syncdb
Creating tables ...
Creating table monitor_service
Creating table monitor_servicecheck
DatabaseError: Hash/Modulo distribution column does not refer to hash/modulo distribution column in referenced table.
【问题讨论】:
-
你确定在你的models.py文件中Service和ServiceCheck是按这个顺序定义的吗?我问是因为您的输出应该显示首先创建了 monitor_service 表。
-
是的 Talvalin 正确的顺序。
-
还有其他应用吗?这段代码应该可以工作。
-
正在运行的 SQL 是什么样的?您可以通过运行
python manage.py sqlall monitor来查看 -
开始; CREATE TABLE "monitor_service" ("id" serial NOT NULL PRIMARY KEY, "user_id" integer NOT NULL REFERENCES "auth_user" ("id") DEFERRABLE INITIALLY DEFERRED, "name" varchar(800) NOT NULL, "service" varchar(2000 ) 非空) ; CREATE TABLE "monitor_servicecheck" ("id" serial NOT NULL PRIMARY KEY, "service_id" integer NOT NULL REFERENCES "monitor_service" ("id") DEFERRABLE INITIALLY DEFERRED, "check_status" varchar(80) NOT NULL, "check_time" timestamp with time区域非空);提交;
标签: python django postgresql foreign-keys