2017-10-25 1 views
1

Ich habe eine funktionierende lokale Umgebung mit Django 1.11 mit einer PostgreSQL 10-Datenbank unter Linux Mint.Erstellen PostgreSQL-Datenbank auf einem anderen Server mit Django

Ich versuche, eine Kopie dieser Umgebung zu nehmen und sie auf zwei Ubuntu 16.04 Entwicklungsservern zu installieren: einen für den Webserver und den anderen für den SQL Server.

Das Problem läuft Django mit dem Ubuntu PostgreSQL-Server.

Wenn ich die Django-Datei settings.py nehme und den Server von 'localhost' in die IP-Adresse des neuen PostgreSQL-Servers umwandle, schlägt jeder mit manage.py ausgegebene Befehl fehl. Dies beinhaltet die Erstellung von Usern, Makemigrationen und migrieren. Das scheitert sowohl an meiner Arbeit, dem Entwicklungscomputer als auch am neuen Ubuntu-Webserver.

Gibt es einen fehlenden Schritt, der nach dem Ändern des Datenbankservers und vor dem Ausführen eines manage.py-Befehls ausgeführt werden sollte?

Alles, was ich gelesen habe sagt, einfach die Makemigrationen ausführen und Befehle migrieren. Ich habe sogar versucht, die Makemigrations-Ordner zu löschen, aber immer noch kein Glück.

Geprüft: Kann die Verbindung zum neuen PostgreSQL-Server mit derselben Benutzer-ID und demselben Kennwort remote herstellen und eine Tabelle erstellen (das Problem sollte also nicht mit Sicherheit oder Remotezugriff zusammenhängen).

Hier ist der Fehler, der auf jeder Zeit kommt:

  Traceback (most recent call last): 
    File "/home/username/Documents/pycharm-2017.2.3/helpers/pycharm/django_manage.py", line 43, in <module> 
    run_module(manage_file, None, '__main__', True) 
    File "/usr/lib/python3.5/runpy.py", line 196, in run_module 
    return _run_module_code(code, init_globals, run_name, mod_spec) 
    File "/usr/lib/python3.5/runpy.py", line 96, in _run_module_code 
    mod_name, mod_spec, pkg_name, script_name) 
    File "/usr/lib/python3.5/runpy.py", line 85, in _run_code 
    exec(code, run_globals) 
    File "/home/dcripps/PycharmProjects/seamus/manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line 
    utility.execute() 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/__init__.py", line 356, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/base.py", line 327, in execute 
    self.check() 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/base.py", line 359, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 62, in _run_checks 
    issues.extend(super(Command, self)._run_checks(**kwargs)) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/management/base.py", line 346, in _run_checks 
    return checks.run_checks(**kwargs) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/checks/registry.py", line 81, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/checks/urls.py", line 16, in check_url_config 
    return check_resolver(resolver) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/core/checks/urls.py", line 26, in check_resolver 
    return check_method() 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/urls/resolvers.py", line 254, in check 
    for pattern in self.url_patterns: 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/urls/resolvers.py", line 405, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/urls/resolvers.py", line 398, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/home/dcripps/PycharmProjects/seamus/seamus/urls.py", line 21, in <module> 
    from assessments import views as assessment_views 
    File "/home/dcripps/PycharmProjects/seamus/assessments/views.py", line 10, in <module> 
    from .forms import NewForm, CreateForm, DetailForm, EquipmentDetailForm, EquipmentAddForm, InspectionsForm, \ 
    File "/home/dcripps/PycharmProjects/seamus/assessments/forms.py", line 17, in <module> 
    .values_list('item_number', 'number_type')) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/query.py", line 250, in __iter__ 
    self._fetch_all() 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/query.py", line 1118, in _fetch_all 
    self._result_cache = list(self._iterable_class(self)) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/query.py", line 138, in __iter__ 
    for row in compiler.results_iter(): 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 836, in results_iter 
    results = self.execute_sql(MULTI) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 894, in execute_sql 
    raise original_exception 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 884, in execute_sql 
    cursor.execute(sql, params) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/backends/utils.py", line 80, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/home/dcripps/seamus_virt/lib/python3.5/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: relation "EquipmentTypes" does not exist 
LINE 1: ...ntTypes"."equipment_type")) AS "number_type" FROM "Equipment.. 

Danke. Hier

Firewall on SQL Server: 
    :~$ sudo ufw status 
    Status: active 
    To       Action  From 
    --       ------  ---- 
    5432      ALLOW  Anywhere 

ist das, was ich in die pg_hba.conf Datei hinzugefügt: Host alle alle 0.0.0.0/0 md5

Datenbanken in settings.py:

DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.postgresql_psycopg2', 
      'NAME': '******', 
      'USER': '******', 
      'PASSWORD': '******', 
      'HOST': '192.168.1.221', 
      'PORT': '5432', 
     } 

}


Laut Daniel kam der Fehler von hier:

item_number_list = [("", "---------")] + \ 
        list(EquipmentTypes.objects.all() 
         .annotate(number_type=Concat('item_number', Value(' - '), 'equipment_type')) 
         .values_list('item_number', 'number_type')) 

Ich war mit dieser als eine Möglichkeit, eine Dropdown-Liste in einem Modell zu füllen:

'item_number': forms.Select(choices=item_number_list, attrs={'class': 'form-control'}), 

ich aus diesem Code kommentiert, und alles funktionierte perfekt.

+0

Sie müssen Ihre DATABASES-Einstellung anzeigen. Welchen Befehl führen Sie auch aus, um diesen Fehler zu erhalten? – YPCrumble

+1

Können Sie Ihre pg_hba.conf teilen? Hast du eine Firewall? Und bitte zeigen Sie Ihre Django Config – ghovat

Antwort

1

Der Traceback zeigt, dass das Problem durch Zeile 17 von assessment/forms.py verursacht wird - wir können den tatsächlichen Code nicht sehen, aber es scheint wahrscheinlich, dass Sie eine Abfrage auf Klassen- oder Modulebene durchführen. Sie müssen dies nicht tun, da auf dieser Ebene beim Import alles ausgeführt wird, bevor die Migrationen ausgeführt werden können.

Beachten Sie, dass dieses Problem nicht mit dem Ausführen der Datenbank auf einem separaten Server speziell, sondern nur durch Verschieben in eine neue leere Datenbank verbunden ist.

+0

Das hat perfekt funktioniert, danke Daniel.Ich hatte einige Abfragen, die in einigen Formularen als Dropdown-Listen fungieren sollten, also muss ich einen anderen Weg finden, dies zu tun. Danke noch einmal. – Derek

+0

Sie müssen sie möglicherweise in die Methode "__init__" des Formulars verschieben. –

+0

Ich habe mehrere Formulare mit der gleichen Liste. Gibt es eine Möglichkeit, die Liste einmal zu schreiben und sie in mehreren Formularen zu verwenden, oder muss sie in der Init-Methode jedes Formulars codiert werden? – Derek

Verwandte Themen