bugfix> python > 投稿

私はDjango1.9を使用してコードベースに取り組んでおり、1.10にアップグレードする準備をすべて整えるのに忙しいです。

python socialauthからpythonsocial auth app djangoに移行した後、問題が発生しました。見つかった手順を使用しましたここに

設定とURLファイルを更新した後、以下のエラーが発生しました。誰かが私がこれを回避する方法を知っていますか?

Running migrations:
  Rendering model states... DONE
  Applying social_django.0006_partial... OK
  Applying social_django.0007_code_timestamp... OK
  Applying social_django.0008_partial_timestamp... OK
  Applying social_django.0009_auto_20191118_0520...Traceback (most recent call last):
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.IntegrityError: column "modified" contains null values
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 200, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/migrations/executor.py", line 92, in migrate
    self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/migrations/executor.py", line 198, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/migrations/migration.py", line 123, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/migrations/operations/fields.py", line 62, in database_forwards
    field,
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 396, in add_field
    self.execute(sql, params)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 110, in execute
    cursor.execute(sql, params)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/brendan/venvs/social/lib/python3.6/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.IntegrityError: column "modified" contains null values

回答 3 件
  • これは通常、モジュールをアップグレードし、新しいモジュールのモデルに新しい制約がある場合に発生します。

    column "modified" contains null values

    1つの方法は、エラーの原因となっているインスタンスのみを削除することです。このために、移行フォルダに移動し、持っているファイルを手動で削除します 0009_auto_20191118_0520 名前の種類、おそらくすべてを削除できますが、 0001_initial.py file 。その後実行 python ./manage.py make migrations social_django 、データベースを更新する必要があります。

    cmdを使用してsocial_djangoアプリの移行履歴をクリアすることも検討できます

    $ python manage.py migrate --fake social_django zero
    
    

    これを行う方法については、こちらのチュートリアルに従ってください。

    編集: これを克服するには、ソーシャル認証アプリdjangoの下位バージョンにダウングレードします。 Django 1.9に到達するための最新バージョンは、social-auth-app-django == 3.1.0でした。

  • ソーシャル認証アプリdjangoの下位バージョンにダウングレードすることで、これを克服することができました。 Django 1.9で入手できた最新バージョンは、social-auth-app-django == 3.1.0でした。

  • 私はまったく同じ問題にぶつかった。 (( pip install "python-social-auth==0.2.21" ->設定 social.apps.django_app.defaultINSTALLED_APPS -> python manage.py migrate -> pip install python-social-auth[django] ->設定 social_djangoINSTALLED_APPS -> python manage.py migrate = column "modified" contains null values )。

    これは、モデルと移行ファイルの変更との間の競合のようです。例えば。ここから:

    django.db.utils.IntegrityError:列 "venue_city"にnull値が含まれています

    Looks like you added null=True after created migration file

    追加することでこのエラーを乗り越えました null=Truemodified のフィールド /usr/local/lib/python2.7/site-packages/social_django/migrations/0009_auto_20191118_0520.py (またはsocial_djangoがインストールされている場所)および移行の再実行。

           migrations.AddField(
                model_name='usersocialauth',
                name='modified',
    -           field=models.DateTimeField(auto_now=True),
    +           field=models.DateTimeField(auto_now=True, null=True),
            ),
    
    

あなたの答え