Python 尝试在Django2中迁移时出错
我有个问题(至少我认为是这样)。我对这一切都是新手,所以如果我问了一些愚蠢的问题,我向你道歉。 我有一些网站,这是正常工作。当我尝试进行迁移时(Python 尝试在Django2中迁移时出错,python,django,Python,Django,我有个问题(至少我认为是这样)。我对这一切都是新手,所以如果我问了一些愚蠢的问题,我向你道歉。 我有一些网站,这是正常工作。当我尝试进行迁移时(python manage.py makemigrations),一切正常,我得到了关于我有多少个新模型的消息,等等。但是,当我在迁移之后运行时,我得到了以下输出: Operations to perform: Apply all migrations: admin, auth, comments, contenttypes, news, sessi
python manage.py makemigrations
),一切正常,我得到了关于我有多少个新模型的消息,等等。但是,当我在迁移之后运行时,我得到了以下输出:
Operations to perform:
Apply all migrations: admin, auth, comments, contenttypes, news, sessions
Running migrations:
Applying comments.0003_auto_20180816_2158...Traceback (most recent call last):
File "../venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: syntax error at or near "WITH ORDINALITY"
LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File ".../venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File ".../venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File ".../venv/lib/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File
".../venv/lib/python3.6/site-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, **options)
File
".../venv/lib/python3.6/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File ".../venv/lib/python3.6/site-
packages/django/core/management/commands/migrate.py", line 203, in handle
fake_initial=fake_initial,
File
".../venv/lib/python3.6/site-
packages/django/db/backends/base/schema.py", line 531, in _alter_field
fk_names = self._constraint_names(model, [old_field.column],
foreign_key=True)
File ".../venv/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 1027, in _constraint_names
constraints = self.connection.introspection.get_constraints(cursor, model._meta.db_table)
File ".../venv/lib/python3.6/site-
packages/django/db/backends/postgresql/introspection.py", line 158, in get_constraints
""", ["public", table_name])
File ".../venv/lib/python3.6/site-packages/django/db/backends/utils.py",
line 100, in execute
return super().execute(sql, params)
File
".../venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File ".../venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File ".../venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "/.../venv/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File ".../venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: syntax error at or near "WITH
ORDINALITY"
LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
^
要执行的操作:
应用所有迁移:管理、身份验证、注释、内容类型、新闻、会话
运行迁移:
正在应用注释.0003_auto_20180816_2158…回溯(最近一次调用上次):
文件“./venv/lib/python3.6/site packages/django/db/backends/utils.py”,第85行,在
返回self.cursor.execute(sql,params)
psycopg2.ProgrammingError:语法错误位于或接近“WITH ORDINALITY”
第6行:从unnest(c.conkey)到序数坐标。。。
^
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“manage.py”,第15行,在
从命令行(sys.argv)执行命令
文件“../venv/lib/python3.6/site packages/django/core/management/_init__.py”,第381行,从命令行执行
utility.execute()
文件“../venv/lib/python3.6/site packages/django/core/management/_init__.py”,执行中第375行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“../venv/lib/python3.6/site packages/django/core/management/base.py”,第316行,在运行中,从
self.execute(*args,**cmd_选项)
文件
“../venv/lib/python3.6/site packages/django/core/management/base.py”,执行中第353行
输出=self.handle(*args,**选项)
文件
“../venv/lib/python3.6/site-packages/django/core/management/base.py”,第83行,包装
res=句柄函数(*args,**kwargs)
文件“../venv/lib/python3.6/site-
packages/django/core/management/commands/migrate.py”,第203行,在handle中
假首字母=假首字母,
文件
“../venv/lib/python3.6/site-
packages/django/db/backends/base/schema.py”,第531行,在\u alter\u字段中
fk_名称=自我约束_名称(模型,[old_field.column],
外键(键=真)
文件“../venv/lib/python3.6/site packages/django/db/backends/base/schema.py”,第1027行,以约束名称
约束=self.connection.introspection.get_约束(游标、模型._meta.db_表)
文件“../venv/lib/python3.6/site-
packages/django/db/backends/postgresql/introspection.py”,第158行,在get\u约束中
“”,[“公共”,表名称])
文件“../venv/lib/python3.6/site packages/django/db/backends/utils.py”,
第100行,执行中
return super().execute(sql,params)
文件
“../venv/lib/python3.6/site packages/django/db/backends/utils.py”,执行中的第68行
返回self.\u使用包装器执行(sql,params,many=False,executor=self.\u execute)
文件“../venv/lib/python3.6/site packages/django/db/backends/utils.py”,第77行,在带有包装器的执行中
返回执行器(sql、参数、多个、上下文)
文件“../venv/lib/python3.6/site packages/django/db/backends/utils.py”,第85行,在
返回self.cursor.execute(sql,params)
文件“/…/venv/lib/python3.6/site packages/django/db/utils.py”,第89行,在__
使用exc_值的_回溯(回溯)提高dj_exc_值
文件“../venv/lib/python3.6/site packages/django/db/backends/utils.py”,第85行,在
返回self.cursor.execute(sql,params)
django.db.utils.ProgrammingError:语法错误位于或接近“WITH”
“平凡”
第6行:从unnest(c.conkey)到序数坐标。。。
^
无论如何,如果在那之后我再次尝试进行迁移,会收到消息说我没有进行迁移。因此,Django做了这项工作,但当我尝试迁移时,这个错误经常出现,我真的很想知道为什么。我尝试用谷歌搜索它,但什么也没有得到。首先,你必须删除每个应用程序中的迁移文件夹 然后,可以使用迁移命令
python manage.py makemigrations
python manage.py migrate
无论何时添加任何新字段,并且面临迁移错误 请遵循以下步骤:
- 删除所有迁移文件(不是迁移文件夹,保留
文件\uuuu init\uuuu.py
- 截断
表django_迁移
- 注释要从models.py添加的新字段。(请确保执行此步骤,否则当您执行以下步骤时,django将抛出错误)
- 运行
python manage.py makemigrations
- 运行
python manage.py migrate--false
- 取消注释要添加的新字段
- 运行
python manage.py makemigrations
- 运行
python manage.py migrate
p.S.:当您仅在一个应用程序中遇到问题时,我建议从django_迁移表中删除该特定应用程序的条目我在
postgresql-server-9.2.24-1.el7_5.x86_64
中遇到了与默认情况下安装在Centos 7
中的相同的问题。安装postgresql 11代码>解决了问题。删除每个应用程序中的“迁移”文件夹。@L你在开玩笑吧?我知道应该读到:D,它在utils.py文件中,而不是我创建或更改的文件。我所做的某些操作可能会导致Django自动创建的文件-utils中出现错误。py@MohammadAli再次感谢你!!!我真是感激不尽奥雷!请写下来作为回应,我会接受的。:)如果您正在使用Postgres,请检查此选项,这在许多极端情况下都不起作用。请避免为任何迁移问题删除迁移文件夹。我以前也犯过同样的错误,直到我被困在这个问题上。我正在写一个关于如何进行迁移和解决迁移问题的详细答案,我一直在帮助我。谢谢@agro!我竖起了大拇指你的回答证实了穆罕默德,因为他一天前的评论帮助了我。但是你的回答