2016-11-12 6 views
1

DjangoアプリケーションをMySQLデータベースに接続しようとしています。私はデータベースを作成し、python manage.py migrateでアプリを移行しようとしました。この時点で私は次のエラーを受け取ります:Djangoアプリケーションを移行できません - MySQLがOperationalErrorをスローしました "大きすぎます"

django.db.utils.OperationalError: (1425, "Too big scale 100 specified for column 'score'. Maximum is 30.") 

models.pyのオブジェクトを確認しました。それは次のようになります。

class Para(models.Model): 
    ... 
    text = models.CharField(max_length=20000) 
    score = models.DecimalField(max_digits=100, decimal_places=5) 

    def __unicode__(self): 
     return self.text[:20] 

だから私はmakemigrationsを実行し、再び移行しようとした、20にmax_digitsを変更しました。しかし、私は同じエラーが発生し続けます。私はMySQLには新しく、私が間違っていることを確信していません。

ご迷惑をおかけして申し訳ございません。ありがとう!前回の移行があなたのサーバが窒息されているものであるため、(既に判明しているとして)

答えて

0

score = models.DecimalField(max_digits=20, decimal_places=5) 

に別のmakemigrationsが続くことを変更すると、動作しません。最も簡単な解決策は、2つの最新の移行を削除することです(他の変更を加えなかった場合)。次に実行する

./manage.py makemigrations 
./manage.py migrate 
+0

ありがとう、それでした。 BLOBを数えずに使用されているテーブルタイプの最大行サイズは65535です。これにはストレージオーバーヘッドが含まれていますので、マニュアルを確認してください。いくつかの列をTEXTまたはBLOB ' "しかし、最初のものはなくなってしまった! – aaravam

+0

'text = models.CharField(max_length = 20000)'のようなフィールドを使うと、最大行サイズを使い果たしてしまう可能性があります。あなたのフルモデルで別の質問を投稿してください。 – e4c5

関連する問題