2017-07-17 28 views
0

我得到一個錯誤:ProgrammingError:關係「等等等等」不存在,試圖運行特定遷移,並得到錯誤

$ python manage.py migrate swsite 0023_hitcounter.py

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表,如下面的遷移中,我試圖獲得樂趣:

# -*- 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()), 
      ], 
     ), 
    ] 

東西可能超出水槽?這是我試圖在我的生產箱上運行此遷移,它在我的開發箱上運行良好(當然)。可能是因爲我跑了特定的遷移? :

蟒蛇manage.py遷移swsite 0023_hitcounter.py

雖然運行:

python manage.py showmigrations

給了我同樣的錯誤?我猜測我的遷移不同步,但無法顯示遷移,我不知道如何顯示未進入此更新的內容(從gilab製作)

+0

同樣的問題在這裏:( – Mirza715

+0

我看了一下django_migrations表,看看我的開發情況以及我正在試圖推廣到的產品。表格有很大的不同:/我知道我做了一些hackery ...但是darn。我可以將我的開發和生產框都恢復到相同的遷移級別,而不會丟失生產數據 – Codejoy

回答

1

追溯顯示您該錯誤發生在IndexView。您正試圖在視圖加載時在數據庫中創建對象。

class IndexView(TemplateView): 
    newhit = HitCounter.objects.create() # remove this line 
    ... 

當視圖像這樣加載時訪問數據庫是一個壞主意,所以你應該刪除該行。在生產環境中,它會給您帶來錯誤,因爲它在您應用創建表的遷移之前嘗試在數據庫中創建對象。

+0

Ty在這裏提供的信息中,我將其標記爲已回答,但我完全錯過了錯誤信息,爲什麼這是一個糟糕的主意,代碼是一個簡單的代碼,它將一個值作爲一個超級簡單的計數器添加到表中,如果我不在視圖中執行操作,我不確定某人在哪裏/怎麼做 – Codejoy

+0

I看過模塊級別的數據庫查詢會導致陳舊的數據問題,我認爲甚至可能會導致運行測試時出現問題。我不知道你的計數器是如何工作的,所以我不知道他最好去的地方 - 那會更好一個單獨的問題。 – Alasdair