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