从 Wagtail 2.7.1 迁移到 2.7.4 的问题
Issue with migration from Wagtail 2.7.1 to 2.7.4
我不得不将 Wagtail 与 Django 一起升级以获得一些安全更新。当吹走我的本地数据库并重新运行迁移时,我收到以下错误。我的后端是 Postgres。
Django 版本:2.2.13
Postrges 版本:9.4
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, cpe, cve4, cvss2, cvss3, enrichment, sessions, taggit, vulnerability, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
Applying cpe.0001_initial... OK
Applying cpe.0002_auto_20200129_1941... OK
Applying cpe.0003_auto_20200330_2229... OK
Applying cve4.0001_initial... OK
Applying cvss3.0001_initial... OK
Applying cvss3.0002_auto_20200130_0403... OK
Applying cvss2.0001_initial... OK
Applying cvss2.0002_auto_20200130_0403... OK
Applying cve4.0002_auto_20200102_2244... OK
Applying cve4.0003_auto_20200106_1747... OK
Applying cve4.0004_auto_20200130_0403... OK
Applying cve4.0005_auto_20200330_2255... OK
Applying cve4.0006_foxscore... OK
Applying enrichment.0001_initial... OK
Applying enrichment.0002_auto_20200205_1925... OK
Applying enrichment.0003_githubrepository_link... OK
Applying enrichment.0004_auto_20200205_2220... OK
Applying enrichment.0005_auto_20200205_2339... OK
Applying enrichment.0006_enrichmentmetrics... OK
Applying sessions.0001_initial... OK
Applying taggit.0001_initial... OK
Applying taggit.0002_auto_20150616_2121... OK
Applying taggit.0003_taggeditem_add_unique_index... OK
Applying wagtailcore.0001_squashed_0016_change_page_url_path_to_text_field... OK
Applying wagtailcore.0017_change_edit_page_permission_description... OK
Applying wagtailcore.0018_pagerevision_submitted_for_moderation_index... OK
Applying wagtailcore.0019_verbose_names_cleanup... OK
Applying wagtailcore.0020_add_index_on_page_first_published_at... OK
Applying wagtailcore.0021_capitalizeverbose... OK
Applying wagtailcore.0022_add_site_name... OK
Applying wagtailcore.0023_alter_page_revision_on_delete_behaviour... OK
Applying wagtailcore.0024_collection... OK
Applying wagtailcore.0025_collection_initial_data... OK
Applying wagtailcore.0026_group_collection_permission... OK
Applying wagtailcore.0027_fix_collection_path_collation... OK
Applying wagtailcore.0024_alter_page_content_type_on_delete_behaviour... OK
Applying wagtailcore.0028_merge... OK
Applying wagtailcore.0029_unicode_slugfield_dj19... OK
Applying wagtailcore.0030_index_on_pagerevision_created_at... OK
Applying wagtailcore.0031_add_page_view_restriction_types... OK
Applying wagtailcore.0032_add_bulk_delete_page_permission... OK
Applying wagtailcore.0033_remove_golive_expiry_help_text... OK
Applying wagtailcore.0034_page_live_revision... OK
Applying wagtailcore.0035_page_last_published_at... OK
Applying wagtailcore.0036_populate_page_last_published_at... OK
Applying wagtailcore.0037_set_page_owner_editable... OK
Applying wagtailcore.0038_make_first_published_at_editable... OK
Applying wagtailcore.0039_collectionviewrestriction... OK
Applying wagtailcore.0040_page_draft_title... OK
Applying wagtailcore.0041_group_collection_permissions_verbose_name_plural... OK
Applying vulnerability.0001_initial... OK
Applying vulnerability.0002_vulnerabilitypage... OK
Applying vulnerability.0003_auto_20200124_1520... OK
Applying vulnerability.0004_auto_20200124_1857... OK
Applying vulnerability.0005_vulnerabilitypage_subtitle... OK
Applying vulnerability.0006_vulnerabilitypage_vulnerable_products... OK
Applying vulnerability.0007_auto_20200220_1758... OK
Applying vulnerability.0008_remove_vulnerabilitypage_risk_score... OK
Applying wagtailadmin.0001_create_admin_access_permissions...Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.SyntaxError: syntax error at or near "ON"
LINE 1: ...ions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLIC...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/srv/cve-api/manage.py", line 21, in <module>
main()
File "/srv/cve-api/manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/commands/migrate.py", line 245, in handle
fake_initial=fake_initial,
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 227, in apply_migration
state = migration.apply(state, schema_editor)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
self.code(from_state.apps, schema_editor)
File "/usr/local/lib/python3.7/dist-packages/wagtail/admin/migrations/0001_create_admin_access_permissions.py", line 26, in create_admin_access_permissions
group.permissions.add(admin_permission)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/fields/related_descriptors.py", line 952, in add
through_defaults=through_defaults,
File "/usr/local/lib/python3.7/dist-packages/django/db/models/fields/related_descriptors.py", line 1136, in _add_items
], ignore_conflicts=True)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 507, in bulk_create
objs_without_pk, fields, batch_size, ignore_conflicts=ignore_conflicts,
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 1272, in _batched_insert
self._insert(item, fields=fields, using=self.db, ignore_conflicts=ignore_conflicts)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 1249, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/sql/compiler.py", line 1395, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 98, in execute
return super().execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: syntax error at or near "ON"
LINE 1: ...ions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLIC...
postgres/container这边的错误比较完整:
db_1 | ERROR: syntax error at or near "ON" at character 82
db_1 | STATEMENT: INSERT INTO "auth_group_permissions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLICT DO NOTHING
我似乎无法弄清楚为什么会发生这种情况以及如何解决它。据我所知,应该没有任何问题,因为这是一个完全全新的安装(本地),迁移为 运行.
时数据库中没有模式或数据
如有任何帮助,我们将不胜感激。谢谢。
您似乎错误地将 Django 更新到了版本 3.* as
Django 3.0 dropped support for PostgreSQL 9.4 which is visible in documentation 也是
PosgreSQL 9.5 在 insert statement 中有新的 ON CONFLICT 子句,这在以前的 PostgreSQL 版本中是不可用的,Django 使用了它
请记住,PostgreSQL 团队不再支持 PostgreSQL 9.4,应该更新
我不得不将 Wagtail 与 Django 一起升级以获得一些安全更新。当吹走我的本地数据库并重新运行迁移时,我收到以下错误。我的后端是 Postgres。
Django 版本:2.2.13 Postrges 版本:9.4
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, cpe, cve4, cvss2, cvss3, enrichment, sessions, taggit, vulnerability, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying authtoken.0001_initial... OK
Applying authtoken.0002_auto_20160226_1747... OK
Applying cpe.0001_initial... OK
Applying cpe.0002_auto_20200129_1941... OK
Applying cpe.0003_auto_20200330_2229... OK
Applying cve4.0001_initial... OK
Applying cvss3.0001_initial... OK
Applying cvss3.0002_auto_20200130_0403... OK
Applying cvss2.0001_initial... OK
Applying cvss2.0002_auto_20200130_0403... OK
Applying cve4.0002_auto_20200102_2244... OK
Applying cve4.0003_auto_20200106_1747... OK
Applying cve4.0004_auto_20200130_0403... OK
Applying cve4.0005_auto_20200330_2255... OK
Applying cve4.0006_foxscore... OK
Applying enrichment.0001_initial... OK
Applying enrichment.0002_auto_20200205_1925... OK
Applying enrichment.0003_githubrepository_link... OK
Applying enrichment.0004_auto_20200205_2220... OK
Applying enrichment.0005_auto_20200205_2339... OK
Applying enrichment.0006_enrichmentmetrics... OK
Applying sessions.0001_initial... OK
Applying taggit.0001_initial... OK
Applying taggit.0002_auto_20150616_2121... OK
Applying taggit.0003_taggeditem_add_unique_index... OK
Applying wagtailcore.0001_squashed_0016_change_page_url_path_to_text_field... OK
Applying wagtailcore.0017_change_edit_page_permission_description... OK
Applying wagtailcore.0018_pagerevision_submitted_for_moderation_index... OK
Applying wagtailcore.0019_verbose_names_cleanup... OK
Applying wagtailcore.0020_add_index_on_page_first_published_at... OK
Applying wagtailcore.0021_capitalizeverbose... OK
Applying wagtailcore.0022_add_site_name... OK
Applying wagtailcore.0023_alter_page_revision_on_delete_behaviour... OK
Applying wagtailcore.0024_collection... OK
Applying wagtailcore.0025_collection_initial_data... OK
Applying wagtailcore.0026_group_collection_permission... OK
Applying wagtailcore.0027_fix_collection_path_collation... OK
Applying wagtailcore.0024_alter_page_content_type_on_delete_behaviour... OK
Applying wagtailcore.0028_merge... OK
Applying wagtailcore.0029_unicode_slugfield_dj19... OK
Applying wagtailcore.0030_index_on_pagerevision_created_at... OK
Applying wagtailcore.0031_add_page_view_restriction_types... OK
Applying wagtailcore.0032_add_bulk_delete_page_permission... OK
Applying wagtailcore.0033_remove_golive_expiry_help_text... OK
Applying wagtailcore.0034_page_live_revision... OK
Applying wagtailcore.0035_page_last_published_at... OK
Applying wagtailcore.0036_populate_page_last_published_at... OK
Applying wagtailcore.0037_set_page_owner_editable... OK
Applying wagtailcore.0038_make_first_published_at_editable... OK
Applying wagtailcore.0039_collectionviewrestriction... OK
Applying wagtailcore.0040_page_draft_title... OK
Applying wagtailcore.0041_group_collection_permissions_verbose_name_plural... OK
Applying vulnerability.0001_initial... OK
Applying vulnerability.0002_vulnerabilitypage... OK
Applying vulnerability.0003_auto_20200124_1520... OK
Applying vulnerability.0004_auto_20200124_1857... OK
Applying vulnerability.0005_vulnerabilitypage_subtitle... OK
Applying vulnerability.0006_vulnerabilitypage_vulnerable_products... OK
Applying vulnerability.0007_auto_20200220_1758... OK
Applying vulnerability.0008_remove_vulnerabilitypage_risk_score... OK
Applying wagtailadmin.0001_create_admin_access_permissions...Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.SyntaxError: syntax error at or near "ON"
LINE 1: ...ions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLIC...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/srv/cve-api/manage.py", line 21, in <module>
main()
File "/srv/cve-api/manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/commands/migrate.py", line 245, in handle
fake_initial=fake_initial,
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/executor.py", line 227, in apply_migration
state = migration.apply(state, schema_editor)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/usr/local/lib/python3.7/dist-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
self.code(from_state.apps, schema_editor)
File "/usr/local/lib/python3.7/dist-packages/wagtail/admin/migrations/0001_create_admin_access_permissions.py", line 26, in create_admin_access_permissions
group.permissions.add(admin_permission)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/fields/related_descriptors.py", line 952, in add
through_defaults=through_defaults,
File "/usr/local/lib/python3.7/dist-packages/django/db/models/fields/related_descriptors.py", line 1136, in _add_items
], ignore_conflicts=True)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 507, in bulk_create
objs_without_pk, fields, batch_size, ignore_conflicts=ignore_conflicts,
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 1272, in _batched_insert
self._insert(item, fields=fields, using=self.db, ignore_conflicts=ignore_conflicts)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/query.py", line 1249, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/usr/local/lib/python3.7/dist-packages/django/db/models/sql/compiler.py", line 1395, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 98, in execute
return super().execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 66, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.7/dist-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/local/lib/python3.7/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: syntax error at or near "ON"
LINE 1: ...ions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLIC...
postgres/container这边的错误比较完整:
db_1 | ERROR: syntax error at or near "ON" at character 82
db_1 | STATEMENT: INSERT INTO "auth_group_permissions" ("group_id", "permission_id") VALUES (1, 1) ON CONFLICT DO NOTHING
我似乎无法弄清楚为什么会发生这种情况以及如何解决它。据我所知,应该没有任何问题,因为这是一个完全全新的安装(本地),迁移为 运行.
时数据库中没有模式或数据如有任何帮助,我们将不胜感激。谢谢。
您似乎错误地将 Django 更新到了版本 3.* as
Django 3.0 dropped support for PostgreSQL 9.4 which is visible in documentation 也是
PosgreSQL 9.5 在 insert statement 中有新的 ON CONFLICT 子句,这在以前的 PostgreSQL 版本中是不可用的,Django 使用了它
请记住,PostgreSQL 团队不再支持 PostgreSQL 9.4,应该更新