Can't delete music on 0.20.1 because of missing music_trackactor relation
I'm running Funkwhale 0.20.1, upgraded through several versions; I believe I started originally with 0.17 or so.
I can't delete any music, because of a missing music_trackactor
relation (table?).
What upgrade script was supposed to create it? How do I make it now, given that it doesn't exist?
fw-postgres_1 | 2020-02-02 22:10:02.007 UTC [21069] STATEMENT: DELETE FROM "music_trackactor" WHERE "music_trackactor"."upload_id" IN (1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515)
fw-api_1 | 2020-02-02 22:10:02,019 django.request ERROR Internal Server Error: /api/v1/manage/library/albums/action/
fw-api_1 | Traceback (most recent call last):
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
fw-api_1 | return self.cursor.execute(sql, params)
fw-api_1 | psycopg2.errors.UndefinedTable: relation "music_trackactor" does not exist
fw-api_1 | LINE 1: DELETE FROM "music_trackactor" WHERE "music_trackactor"."upl...
fw-api_1 | ^
fw-api_1 |
fw-api_1 |
fw-api_1 | The above exception was the direct cause of the following exception:
fw-api_1 |
fw-api_1 | Traceback (most recent call last):
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
fw-api_1 | response = get_response(request)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
fw-api_1 | response = self.process_exception_by_middleware(e, request)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
fw-api_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
fw-api_1 | File "/usr/lib/python3.6/contextlib.py", line 52, in inner
fw-api_1 | return func(*args, **kwds)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
fw-api_1 | return view_func(*args, **kwargs)
fw-api_1 | File "/usr/lib/python3.6/site-packages/rest_framework/viewsets.py", line 114, in view
fw-api_1 | return self.dispatch(request, *args, **kwargs)
fw-api_1 | File "/usr/lib/python3.6/site-packages/rest_framework/views.py", line 505, in dispatch
fw-api_1 | response = self.handle_exception(exc)
fw-api_1 | File "/usr/lib/python3.6/site-packages/rest_framework/views.py", line 465, in handle_exception
fw-api_1 | self.raise_uncaught_exception(exc)
fw-api_1 | File "/usr/lib/python3.6/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
fw-api_1 | raise exc
fw-api_1 | File "/usr/lib/python3.6/site-packages/rest_framework/views.py", line 502, in dispatch
fw-api_1 | response = handler(request, *args, **kwargs)
fw-api_1 | File "/app/funkwhale_api/manage/views.py", line 134, in action
fw-api_1 | result = serializer.save()
fw-api_1 | File "/app/funkwhale_api/common/serializers.py", line 161, in save
fw-api_1 | result = handler(self.validated_data["objects"])
fw-api_1 | File "/usr/lib/python3.6/contextlib.py", line 52, in inner
fw-api_1 | return func(*args, **kwds)
fw-api_1 | File "/app/funkwhale_api/manage/serializers.py", line 478, in handle_delete
fw-api_1 | return objects.delete()
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 711, in delete
fw-api_1 | deleted, _rows_count = collector.delete()
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/models/deletion.py", line 294, in delete
fw-api_1 | count = qs._raw_delete(using=self.using)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 725, in _raw_delete
fw-api_1 | return sql.DeleteQuery(self.model).delete_qs(self, using)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/models/sql/subqueries.py", line 75, in delete_qs
fw-api_1 | cursor = self.get_compiler(using).execute_sql(CURSOR)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1100, in execute_sql
fw-api_1 | cursor.execute(sql, params)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute
fw-api_1 | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
fw-api_1 | return executor(sql, params, many, context)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
fw-api_1 | return self.cursor.execute(sql, params)
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
fw-api_1 | raise dj_exc_value.with_traceback(traceback) from exc_value
fw-api_1 | File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
fw-api_1 | return self.cursor.execute(sql, params)
fw-api_1 | django.db.utils.ProgrammingError: relation "music_trackactor" does not exist
fw-api_1 | LINE 1: DELETE FROM "music_trackactor" WHERE "music_trackactor"."upl...
fw-api_1 | ^
fw-api_1 |
fw-api_1 |
fw-api_1 | [2020-02-02 22:10:02 +0000] [12] [INFO] ('172.16.238.11', 40724) - "POST /api/v1/manage/library/albums/action/ HTTP/1.1" 500