Saturday, September 5, 2020

Is this a bug on manage.py command: no such table: auth_permission?

Hi,

I am getting an error django.db.utils.OperationalError: no such table: auth_permission on my manage.py command (makemigrations/migrate/runserver)

I am not sure if this consider a bug or is it a problem of my setup. So I am checking here before filing bug report to the ticket tracker.

To reproduce the error:

  • Django==2.2.15
  • djangorestframework==3.11.1

Steps:

  1. Copy code below.
  2. Run python manage.py makemigrations -> error.

or

  1. Remove the code from urls.py that will cause the error.
  2. Run python manage.py makemigrations -> success without error.
  3. Add back the removed code from step 1.
  4. Run python manage.py migrate -> this will trigger the same error. Imagine we deployed our project to server and run migrate for the very first time.

customuser/models.py

from django.contrib.auth.models import AbstractUser, Permission, UserManager  from django.db.models import Q  from django.db import models    class CustomUserManager(UserManager):        def get_users(self):          perm = Permission.objects.get(codename='can_view_something')          users = self.filter(Q(groups__permissions=perm) | Q(user_permissions=perm))          return users    class CustomUser(AbstractUser):      objects = CustomUserManager()        permissions = (          ('can_view_something', 'Can View Something'),      )  

customuser/views.py

from django.contrib.auth import get_user_model  from rest_framework import generics, serializers  from .models import CustomUser    class UserSerializer(serializers.ModelSerializer):      class Meta(object):          model = get_user_model()          fields = ('id', 'username',)    class SomeUserView(generics.ListAPIView):      queryset = get_user_model().objects.get_users()      serializer = UserSerializer  

myproject/urls.py (Root urls.py)

from django.contrib import admin  from django.urls import path  from customuser import views    urlpatterns = [      path('admin/', admin.site.urls),      path('users', views.SomeUserView.as_view(), name="some-user-view")  ]  

Exact traceback

  Traceback (most recent call last):    File "manage.py", line 21, in <module>      main()    File "manage.py", line 17, in main      execute_from_command_line(sys.argv)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line      utility.execute()    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute      self.fetch_command(subcommand).run_from_argv(self.argv)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv      self.execute(*args, **cmd_options)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/base.py", line 361, in execute      self.check()    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/base.py", line 390, in check      include_deployment_checks=include_deployment_checks,    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/management/base.py", line 377, in _run_checks      return checks.run_checks(**kwargs)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/checks/registry.py", line 72, in run_checks      new_errors = check(app_configs=app_configs)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config      return check_resolver(resolver)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver      return check_method()    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/urls/resolvers.py", line 399, in check      for pattern in self.url_patterns:    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__      res = instance.__dict__[self.name] = self.func(instance)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/urls/resolvers.py", line 584, in url_patterns      patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__      res = instance.__dict__[self.name] = self.func(instance)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/urls/resolvers.py", line 577, in urlconf_module      return import_module(self.urlconf_name)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/importlib/__init__.py", line 127, in import_module      return _bootstrap._gcd_import(name[level:], package, level)    File "<frozen importlib._bootstrap>", line 1006, in _gcd_import    File "<frozen importlib._bootstrap>", line 983, in _find_and_load    File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked    File "<frozen importlib._bootstrap>", line 677, in _load_unlocked    File "<frozen importlib._bootstrap_external>", line 728, in exec_module    File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed    File "/Users/me/Workspace/reproducemigrateerror/reproduceerror/urls.py", line 20, in <module>      from customuser import views    File "/Users/me/Workspace/reproducemigrateerror/customuser/views.py", line 14, in <module>      class SomeUserView(generics.ListAPIView):    File "/Users/me/Workspace/reproducemigrateerror/customuser/views.py", line 15, in SomeUserView      queryset = get_user_model().objects.get_users()    File "/Users/me/Workspace/reproducemigrateerror/customuser/models.py", line 9, in get_users      perm = Permission.objects.get(codename='can_view_something')    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method      return getattr(self.get_queryset(), name)(*args, **kwargs)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/query.py", line 402, in get      num = len(clone)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/query.py", line 256, in __len__      self._fetch_all()    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/query.py", line 1242, in _fetch_all      self._result_cache = list(self._iterable_class(self))    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/query.py", line 55, in __iter__      results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1140, in execute_sql      cursor.execute(sql, params)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/utils.py", line 99, in execute      return super().execute(sql, params)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/utils.py", line 67, in execute      return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers      return executor(sql, params, many, context)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute      return self.cursor.execute(sql, params)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__      raise dj_exc_value.with_traceback(traceback) from exc_value    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute      return self.cursor.execute(sql, params)    File "/Users/me/.virtualenvs/reproducemigrateerror-hrGW_V7T/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute      return Database.Cursor.execute(self, query, params)  django.db.utils.OperationalError: no such table: auth_permission  

Thanks

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/aeca51fa-2abb-4216-9ec3-6bc0e35c5857n%40googlegroups.com.

No comments:

Post a Comment