python - Django "ValueErrror: could not find common ancestor of {migrations}"

标签 python django postgresql database-migration hstore

我正在尝试遵循 https://docs.djangoproject.com/en/2.0/ref/contrib/postgres/operations/ 中的文档创建一个迁移,该迁移实际上将在数据库上执行 SQL 语句 CREATE EXTENSION IF NOT EXISTS hstore;。我已尝试将名为 create_extension_hstore.py 的以下文件添加到 migrations 目录:

from django.db import migrations
from django.contrib.postgres.operations import CreateExtension


class Migration(migrations.Migration):
    operations = [CreateExtension(name='hstore')]

我对此的“心理模型”是,由于 Django 从它们的 dependencies 推断迁移的顺序,而这个没有,它应该首先运行。但是,当我尝试运行 python manage.py makemigrations --merge 时出现错误:

(venv) Kurts-MacBook-Pro:lucy-web kurtpeek$ python manage.py makemigrations --merge
(0.000) SELECT typarray FROM pg_type WHERE typname = 'citext'; args=None
(0.003) 
            SELECT c.relname, c.relkind
            FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
            WHERE c.relkind IN ('r', 'v')
                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                AND pg_catalog.pg_table_is_visible(c.oid); args=None
(0.001) SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"; args=()
Traceback (most recent call last):
  File "manage.py", line 29, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/commands/makemigrations.py", line 142, in handle
    return self.handle_merge(loader, conflicts)
  File "/Users/kurtpeek/Documents/Dev/lucy/lucy-web/venv/lib/python3.6/site-packages/django/core/management/commands/makemigrations.py", line 272, in handle_merge
    raise ValueError("Could not find common ancestor of %s" % migration_names)
ValueError: Could not find common ancestor of {'0091_family_adopting_or_surrogate', 'create_extension_hstore'}

我该如何解决这个问题?我可以尝试将 dependencies=['0001_initial'] 添加到 Migration 类,但这似乎有点武断,因为我真正想要的是先运行此迁移。

最佳答案

如果您希望它在第一次生成的迁移之前运行,我想您会希望将此迁移添加到 0001 中的依赖项。

如果您现在刚开始需要 hstore 并且不需要先运行它,您可以很容易地添加为 data migration像往常一样就位。

关于python - Django "ValueErrror: could not find common ancestor of {migrations}",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671457/

相关文章:

postgresql - Postgres 9.4 0 undefined symbol - PQhostaddr

django - 执行不区分大小写的查询时不使用 GIN 三元组索引

python - Django: IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录

python - 获取 Django 项目使用的 python 包列表

python - 有没有办法从 django 模板生成包含非 ascii 符号的 pdf?

python - MongoEngine:Embeddeddocument 字段不将默认值设置为 none?

postgresql - 有两个不同键的条件 JOIN

javascript - 通过 HTML 将参数从 Python Flask 应用程序传递到 Javascript 文件

python - python中skimage的rgb2gray : AttributeError: Nonetype object has no attribute ndim

python - 多个进程共享一个监听套接字 : When a new process enters why does the old one stop?