2017-07-17 6 views
0

ich eine Störung erhalte:ProgrammingError: Beziehung ‚bla bla‘ nicht existiert, versucht, die spezifische Migration zu laufen und bekommen Fehler

$ 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"... 

Dies ist verwirrend für mich, da es speziell ist versucht, die swsite_hitcounter Tabelle wie in der folgenden Migration Spaß ich versuche zu bauen:

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

Ist vielleicht aus Waschbecken? Dies ist der Versuch, diese Migration auf meiner Produktionsbox auszuführen. Sie lief (natürlich) auf meiner Entwicklungsumgebung. Könnte es sein, dass ich eine bestimmte Migration durchgeführt habe? :

Python manage.py Obwohl Lauf 0023_hitcounter.py

swsite migrieren:

python manage.py showmigrations

Gibt mir gleichen Fehler? Ich nehme an, dass meine Migrationen nicht synchron sind, aber Migrationen nicht angezeigt werden können. Ich weiß nicht, wie man die anzeigen kann, die nicht in dieses Update gekommen sind (on production from gilab)

+0

gleiche Frage hier :( – Mirza715

+0

Ich schaute auf die django_migrations Tabelle für meine Entwicklung und die ich versuche, zur Produktion zu schieben. Die Tabellen sind sehr unterschiedlich:/Ich weiß, ich habe ein paar Hackereien ... aber verdammt. Ich wünschte Ich konnte meine Entwicklungs- und Produktionsbox auf die gleiche Migrationsebene bringen, ohne Daten über die Produktion zu verlieren. " – Codejoy

Antwort

1

Das Traceback zeigt Ihnen dass der Fehler in IndexView auftritt. Sie versuchen, Objekte in der Datenbank zu erstellen, wenn die Ansicht geladen wird.

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

Zugriff auf die Datenbank, wenn die Ansichten wie diese laden ist eine schlechte Idee, so sollten Sie wahrscheinlich die Zeile entfernen. In der Produktion erhalten Sie den Fehler, da versucht wird, das Objekt in der Datenbank zu erstellen, bevor Sie die Migration angewendet haben, die die Tabelle erstellt.

+0

Ty für die Information hier, ich markiere das als beantwortet. Ich habe es total verpasst in dem Fehler. Ich muss aber fragen, Warum ist das eine schlechte Idee? Der Code ist ein einfaches Stück, das zu einer Tabelle einen Wert als einen super einfachen Hit-Zähler hinzufügt. Wenn ich es nicht in der Ansicht mache, bin ich mir nicht sicher, wo/wie jemand anderes es macht – Codejoy

+0

I Datenbankabfragen auf Modulebene verursachen Probleme mit veralteten Daten, und ich denke, dass sogar Probleme beim Ausführen von Tests auftreten können Ich weiß nicht, wie Ihr Zähler funktioniert, also weiß ich nicht Der beste Platz dafür - das wäre besser als separate Frage. – Alasdair

Verwandte Themen