Opened 8 hours ago

Closed 8 hours ago

#36238 closed Uncategorized (invalid)

Migrate command executing project code cause migation failed.

Reported by: jcyang Owned by:
Component: Uncategorized Version: 5.1
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I have an existing project with sqlite as database engine, and I want to recreate database file.

So I just deleted existing db file and migrations folder, and run command python manage.py migate.

I got the this error: django.db.utils.OperationalError: no such table: django_content_type.

It confused me for a long time, util I noticed the following among the output messages.

  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "D:\workflow\backend\project\urls.py", line 31, in <module>
    path('api/', include('api.urls')),
                 ^^^^^^^^^^^^^^^^^^^
  File "C:\Python\Python311\Lib\site-packages\django\urls\conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "D:\workflow\backend\api\urls.py", line 3, in <module>
    from api import handlers
  File "D:\workflow\backend\api\handlers.py", line 223, in <module>
    class PermissionHandler(_CRUD):
  File "D:\workflow\backend\api\handlers.py", line 233, in PermissionHandler
    syspermission_type = ContentType.objects.get(app_label='common',model='syspermission')



Apparently, Django executed the sevice code in my project file, and that led to the error because no databases available now.

I commented out the configuration ROOT_URLCONF = 'project.urls' to make it not execute the code in my project. And then python manage.py migate worked very well. Then I restored the ROOT_URLCONF = 'project.urls' configuation item.

But that's just a bypass and weird way.

Hope Django team could fix that. Thanks.

Change History (1)

comment:1 by David Sanders, 8 hours ago

Resolution: invalid
Status: newclosed

Thanks for the report but ... Database code should not be run at module -level ... which appears to be what's happening here.

If you need assistance in using Django please feel free to ask help from a friendly community member on Discord or the Django forum 👍

Note: See TracTickets for help on using tickets.
Back to Top