首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ProgrammingError:关系'blah blah‘不存在,试图运行特定的迁移并获得错误

ProgrammingError:关系'blah blah‘不存在,试图运行特定的迁移并获得错误
EN

Stack Overflow用户
提问于 2017-07-17 21:06:12
回答 1查看 1.7K关注 0票数 0

我收到了一个错误:

$ python manage.py migrate swsite 0023_hitcounter.py

代码语言:javascript
代码运行次数:0
运行
复制
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 398, in execute
    self.check()
  File "/usr/lib64/python2.7/site-packages/django/core/management/base.py", line 426, in check
    include_deployment_checks=include_deployment_checks,
  File "/usr/lib64/python2.7/site-packages/django/core/checks/registry.py", line 75, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/usr/lib64/python2.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "/usr/lib64/python2.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
    for pattern in resolver.url_patterns:
  File "/usr/lib64/python2.7/site-packages/django/utils/functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 417, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/usr/lib64/python2.7/site-packages/django/utils/functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 410, in urlconf_module
    return import_module(self.urlconf_name)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/var/www/swlab-website/mysite/urls.py", line 25, in <module>
    url(r'^swsite/', include('swsite.urls')),
  File "/usr/lib64/python2.7/site-packages/django/conf/urls/__init__.py", line 52, in include
    urlconf_module = import_module(urlconf_module)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/var/www/swlab-website/swsite/urls.py", line 2, in <module>
    from . import views
  File "/var/www/swlab-website/swsite/views.py", line 27, in <module>
    class IndexView(generic.ListView):
  File "/var/www/swlab-website/swsite/views.py", line 31, in IndexView
    newhit = HitCounter.objects.create()
  File "/usr/lib64/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 401, in create
    obj.save(force_insert=True, using=self.db)
  File "/usr/lib64/python2.7/site-packages/django/db/models/base.py", line 708, in save
    force_update=force_update, update_fields=update_fields)
  File "/usr/lib64/python2.7/site-packages/django/db/models/base.py", line 736, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/usr/lib64/python2.7/site-packages/django/db/models/base.py", line 820, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/usr/lib64/python2.7/site-packages/django/db/models/base.py", line 859, in _do_insert
    using=using, raw=raw)
  File "/usr/lib64/python2.7/site-packages/django/db/models/manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/db/models/query.py", line 1039, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/usr/lib64/python2.7/site-packages/django/db/models/sql/compiler.py", line 1060, in execute_sql
    cursor.execute(sql, params)
  File "/usr/lib64/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/lib64/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib64/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/lib64/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "swsite_hitcounter" does not exist
LINE 1: INSERT INTO "swsite_hitcounter" ("date", "template_location"...

这让我感到困惑,因为它特别地试图构建swsite_hitcounter表,就像在下面的迁移中所尝试的那样:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2017-07-05 15:56
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('swsite', '0022_auto_20170307_1343'),
    ]

    operations = [
        migrations.CreateModel(
            name='HitCounter',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateTimeField(auto_now=True)),
                ('template_location', models.TextField()),
            ],
        ),
    ]

可能有什么东西从水槽里出来了吗?这是我试图在我的生产盒上运行这个迁移,它在我的开发盒上运行得很好(当然)。可能是因为我进行了一次特定的迁移吗?

python manage.py迁移swsite 0023_hitcounter.py

虽然在奔跑:

python manage.py showmigrations

给了我同样的错误?我猜我的迁移是不同步的,但不能显示迁移,我不知道如何显示那些没有进入这一更新的(在gilab的生产中)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-17 22:06:46

跟踪显示错误发生在IndexView中。当视图加载时,您正试图在数据库中创建对象。

代码语言:javascript
代码运行次数:0
运行
复制
class IndexView(TemplateView):
    newhit = HitCounter.objects.create()  # remove this line
    ...

在这样的视图加载时访问数据库是个坏主意,所以您可能应该删除这一行。在生产中,它会给出错误,因为它试图在应用创建表的迁移之前在数据库中创建对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45153674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档