2017-08-23 2 views
0
django.db.utils.OperationalError: cannot ALTER TABLE "news_article" because it has pending trigger events 

だから、私は、次のような問題があります。彼らはblank=Truenull=Trueに設定されました...残念です。ああ、いいえ、私はそれを修正する必要はありません。私はnull=Trueを削除し、default=''を設定した後だから、私は私の移行に次のことを書いた:null = Trueフィールドをnull = Falseフィールドに変更するにはどうすればいいですか?私はいくつかのChar-とTextFieldを含んでいるDjangoのクラス、記事を、持っている</p> <p>:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import models, migrations 
import languagefields.utils 
from languagefields.utils import LANGUAGES 
from django.utils.translation import activate 
from news.models import Article 


def null_migrations(apps, schema_editor): 
    activate('en') 
    fields = ['short_title', 'description'] 
    for p in Article.objects.all(): 
     for l in LANGUAGES: 
      for f in fields: 
       if p.get_language(l, f) is None: 
        p.set_localized(l, f, '') 
        p.save() 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('news', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RunPython(null_migrations), 
     migrations.AlterField(.... 

をフィールドには、翻訳を有効にデフォルトChar- /テキストフィールドに基づいて、カスタムフィールド、です。だから、彼らの束があります。あなたが作成するすべてのフィールドについて、英語、ドイツ語などの説明が5つあります。ちょっとした機能はうまく動作し、サーバーで実行して手動でデータベースエントリをクリーンアップしましたが、それは停止しません上記の例外。だから私は外出先で掃除するためにそれを移住に入れたいと思った。しかし、まだ例外です。私は間違って何をしていますか?

は、事前にありがとう:) 2でマイグレーションを分割

EDIT

0002_null_cleaning.py

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import models, migrations 
import languagefields.utils 
from languagefields.utils import LANGUAGES 
from django.utils.translation import activate 
from news.models import Article 


def null_migrations(apps, schema_editor): 
    activate('en') 
    fields = ['short_title', 'description'] 
    for p in Article.objects.all(): 
     for l in LANGUAGES: 
      for f in fields: 
       if p.get_language(l, f) is None: 
        p.set_localized(l, f, '') 
        p.save() 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('news', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RunPython(null_migrations), 
] 

0003_data_migration

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.db import models, migrations 
import languagefields.utils 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('news', '0002_null_cleaning'), 
    ] 

    operations = [ 
     migrations.AlterField(... 

まだ同じエラーが発生しています0003

答えて

0

私は2つの実際の移行に移行を分割する必要があると思います。これらはトランザクション内で発生するはずです。そのため、データを変更してテーブルを変更することは、おそらくお粗末なものではありません。 2つの移行を作成するだけで動作するはずです。

+0

私はそれを分割しようとしました。私は自分の投稿を編集して、私がどのようにしたのかを示しています。それは何も変わっていない、私はそこに何か間違っているかどうか知っていますか? – Ozymandias

関連する問題