24

少し問題が発生しました。' python manage.py syncdb' を実行すると上記のエラー メッセージが表示されます。かなり古いサイトで作業しています。postgres DBでdjango 1.2.6を実行しています。

実行には南がインストールされていなかったので、なんとか機能させることができました。Ranpython manage.py schemamigration --initial contact_enquiriesは問題なく実行され、移行を依頼されました。次に実行しpython manage.py migrate contact_enquiriesたところ、上記と同じエラーが発生しました。

私のモデルのどの構文についても文句を言わないので、私は混乱しています。ここに私のモデルがあります。

from django.db import models

class DocumentUpload(models.Model):
    name = models.CharField(max_length="200")

    document_upload = models.FileField(upload_to="uploads/documents")


    def __unicode__(self):
        return "%s" % self.name

class DocumentRequest(models.Model):
    name = models.CharField(max_length="200")

    company = models.CharField(max_length="200")

    job_title = models.CharField(max_length="200")

    email = models.EmailField(max_length="200")

    report = models.ManyToManyField(DocumentUpload)

    def __unicode__(self):
        return "%s" % self.name

さらに情報が必要な場合は、お知らせください。

ありがとう!

4

5 に答える 5

62

これが問題であると 100% 確信しているわけではありませんが、シーケンスが古くなっている可能性は十分にあります。

これを Postgres 内で実行すると問題は解決しますか?

SELECT setval('django_content_type_id_seq', (SELECT MAX(id) FROM django_content_type));
于 2013-10-02T11:48:43.910 に答える
19

これは通常、プライマリ キー シーケンスが同期していないことを意味します。これは、不適切な移行などが原因である可能性があります。
これを修正するには;
1. dbshel​​l を起動します
python manage.py dbshell
。 2. 主キーの現在の最大値を見つけます
select max(id) from django_content_type;
。 3. 主キー シーケンスを変更して、手順 2 で見つかった値よりも大きい値から開始します。
したがって、手順 2 で返された値が 290780 であると仮定すると290780 より大きい番号で開始するシーケンス
alter sequence django_content_type_id_seq restart with 295000;

于 2016-01-07T07:01:32.573 に答える