我正在使用Django 1.9编写代码库,我正忙着准备一切升级到1.10。
从python社交身份验证迁移到python社交身份验证应用django后,我遇到了一个问题。我已使用此处找到的步骤
更新设置和网址文件后,我遇到了以下错误。有人知道我该如何解决吗?
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
这种情况通常发生在你升级模块而新模块的模型具有新约束的情况下(根据你的情况)
“已修改”列包含空值
一种方法是只删除导致错误的实例。为此,请转到migrations文件夹并手动删除具有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社交模块中吗?
我尝试编辑模块的迁移,并添加了kwarg null = True。这似乎已经奏效,但是我担心这会给克隆存储库的任何人带来问题,并且似乎不是准备升级生产的最安全方法。
我在这里添加了一个答案,但是正是您的回答使我走上了正确的轨道。如果您编辑答案以包括social-auth-app-django == 3.1.0解决了问题,我将接受它作为答案。