Django OperationalError при создании таблицы django_content_type

С локальным MySQL все было в порядке, но с производственным возникает ошибка. После этой ошибки я вижу в базе данных только следующие таблицы: auth_group, auth_group_permissions, auth_permission, django_content_type и django_migrations

Operations to perform:
  Synchronize unmigrated apps: djoser, messages, rest_framework, staticfiles
  Apply all migrations: account, admin, auth, authtoken, blog, commands, contenttypes, faq, servers, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial...Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Program Files\Python310\lib\site-packages\django\db\backends\mysql\base.py", line 75, in execute
    return self.cursor.execute(query, args)
  File "C:\Program Files\Python310\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
    res = self._query(query)
  File "C:\Program Files\Python310\lib\site-packages\MySQLdb\cursors.py", line 319, in _query
    db.query(q)
  File "C:\Program Files\Python310\lib\site-packages\MySQLdb\connections.py", line 254, in query
    _mysql.connection.query(self, query)
MySQLdb.OperationalError: (1142, "REFERENCES command denied to user 'test_user'@'22.161.40.219' for table 'django_content_type'")

Решение: После возникновения вышеуказанной ошибки снова запустите команду python manage.py migrate, после чего вы, вероятно, получите другую ошибку, подобную "table_name already exists". Затем выполните команду python manage.py migrate <app> --fake для приложения, с которым связана эта таблица, и пробуйте эти 2 действия до тех пор, пока не будут созданы все необходимые таблицы в базе данных.

Решение

После возникновения вышеуказанной ошибки:

  1. Запустите python manage.py migrate снова, после чего вы, вероятно, получите еще одну ошибку типа "'table_name' already exists".
  2. Запустите команду python manage.py migrate <app> --fake для приложения, с которым связана таблица 'table_name'.
  3. Попробуйте эти 2 шага, пока не будут созданы все необходимые таблицы в базе данных.
Вернуться на верх