seibert-media / teamvault

Keep your company's passwords behind the firewall
Other
40 stars 12 forks source link

migrations fail on Ubuntu 18.04 #108

Closed zuntrax closed 3 years ago

zuntrax commented 6 years ago

I tried to set up teamvault on a fresh Ubuntu 18.04 box with the current master (c00ad68).

When running teamvault upgrade, the migration for the settings app fails because of a missing relation settings_setting.

Full stacktrace ``` python $ sudo teamvault upgrade ### Running migrations... Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) psycopg2.ProgrammingError: relation "settings_setting" does not exist LINE 1: ...s_setting"."key", "settings_setting"."value" FROM "settings_... ^ The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/bin/teamvault", line 11, in load_entry_point('teamvault==0.7.3', 'console_scripts', 'teamvault')() File "/usr/local/lib/python3.6/dist-packages/teamvault/cli.py", line 60, in main pargs.func(pargs) File "/usr/local/lib/python3.6/dist-packages/teamvault/cli.py", line 91, in upgrade execute_from_command_line(["", "migrate", "--noinput", "-v", "3", "--traceback"]) File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 371, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 347, in execute django.setup() File "/usr/local/lib/python3.6/dist-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python3.6/dist-packages/django/apps/registry.py", line 120, in populate app_config.ready() File "/usr/local/lib/python3.6/dist-packages/teamvault/apps/settings/__init__.py", line 15, in ready config.configure_teamvault_secret_key(parsed_config, settings) File "/usr/local/lib/python3.6/dist-packages/teamvault/apps/settings/config.py", line 171, in configure_teamvault_secret_key checksum = Setting.get("fernet_key_hash", default=None) File "/usr/local/lib/python3.6/dist-packages/teamvault/apps/settings/models.py", line 20, in get return cls.objects.get(key=key).value File "/usr/local/lib/python3.6/dist-packages/django/db/models/manager.py", line 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python3.6/dist-packages/django/db/models/query.py", line 397, in get num = len(clone) File "/usr/local/lib/python3.6/dist-packages/django/db/models/query.py", line 254, in __len__ self._fetch_all() File "/usr/local/lib/python3.6/dist-packages/django/db/models/query.py", line 1179, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python3.6/dist-packages/django/db/models/query.py", line 54, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) File "/usr/local/lib/python3.6/dist-packages/django/db/models/sql/compiler.py", line 1063, in execute_sql cursor.execute(sql, params) File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 68, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers return executor(sql, params, many, context) File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) File "/usr/local/lib/python3.6/dist-packages/django/db/utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 85, in _execute return self.cursor.execute(sql, params) django.db.utils.ProgrammingError: relation "settings_setting" does not exist LINE 1: ...s_setting"."key", "settings_setting"."value" FROM "settings_... ^ ```


I'm not completely sure why this happens, but apparently Setting.get("fernet_key_hash", default=None) is called before the table is created and its absence does not trigger the default case. I'm confused because these parts of the settings app haven't been changed recently.

noqqe commented 4 years ago

Hits me as well. @trehn any ideas?

noqqe commented 3 years ago

i think its fixed in ac9b587a26321f0b4afc5f36b0153c3e4b10bd83