I have a working local environment using Django 1.11 with a PostgreSQL 10 database running on Linux Mint.
I am trying to take a copy of this environment and install it on two Ubuntu 16.04 development servers: one for the web server and the other for the SQL server.
The problem is running Django with the Ubuntu PostgreSQL server.
When I take the Django settings.py file, and change the server from ‘localhost’ to the IP address of the new PostgreSQL server, every command issued with manage.py fails. This includes createsuperuser, makemigrations and migrate. This fails on both my working, development machine and the new Ubuntu web server.
Is there a step I am missing that should be done after changing the database server and before running a manage.py command?
Everything I have read says to simply run the makemigrations, and migrate commands. I have even tried to delete the makemigrations folders, but still no luck.
Verified: Can connect to the new PostgreSQL server remotely using the same user ID and password, and was able to create a table (so problem should not be related to security or remote access).
Here is the error that comes up each time:
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..
Thank you.
Firewall on SQL Server:
:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
5432 ALLOW Anywhere
Here is what I added to the pg_hba.conf file: host all all 0.0.0.0/0 md5
Databases in settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': '******',
'USER': '******',
'PASSWORD': '******',
'HOST': '192.168.1.221',
'PORT': '5432',
}
}
As per Daniel, the error came from here:
item_number_list = [("", "---------")] +
list(EquipmentTypes.objects.all()
.annotate(number_type=Concat('item_number', Value(' - '), 'equipment_type'))
.values_list('item_number', 'number_type'))
I was using this as a way to populate a dropdown list in a model:
'item_number': forms.Select(choices=item_number_list, attrs={'class': 'form-control'}),
I commented out this code, and everything worked perfectly.
Advertisement
Answer
The traceback is showing that the problem is caused by line 17 of assessment/forms.py – we can’t see the actual code but it seems likely that you are performing a query at class or module level. You must not do this, as anything at that level is executed on import, which is before the migrations can have a chance to run.
Note that this problem is not related to running the database on a separate server specifically, but just caused by moving to a new empty database.