Миграция существующих полей базы данных. Ошибка E340 при запуске - PullRequest
0 голосов
/ 26 июня 2019

Привет всем, я довольно новичок в Python Anywhere, у меня запущено приложение django на python 3.7, я вручную добавил нужные мне таблицы и поля через SSH в MySQL Workbench и запустил [migrate.py inpectdb> / app / models.py] затем makemigrations, затем, когда я запускаю Migrate, я получаю это:

ERRORS: auth.Group.permissions: (fields.E340) The field's intermediary table 'auth_group_permissions' clashes with the table name of 'app.AuthGroupPermissions'. auth.User.groups: (fields.E340) The field's intermediary table 'auth_user_groups' clashes with the table name of 'app.AuthUserGroups'. auth.User.user_permissions: (fields.E340) The field's intermediary table 'auth_user_user_permissions' clashes with the table name of 'app.AuthUserUserPermissions'.

Если я удаляю таблицы аутентификации из файла models.py и пытаюсь выполнить миграцию, я получаю:

File "/usr/lib/python3.7/site-packages/MySQLdb/connections.py", line 276, in query _mysql.connection.query(self, query) django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')

Из того, что я прочитал, он конфликтует с settings.py [INSTALLED_APPS], но я не уверен, куда идти, чтобы заставить миграцию работать правильно.

1 Ответ

1 голос
/ 27 июня 2019

Дополнительные таблицы, которые вы заметили, были созданы Django, потому что у вас есть приложение, которое создает эти таблицы в вашем INSTALLED_APPS.Судя по именам таблиц, я предполагаю, что это django.contrib.auth добавляет их.Вероятно, существуют другие таблицы, которые создаются таким образом, но они просто не конфликтуют с таблицами, которые вы уже создали.

Вторая ошибка, которую вы получаете, заключается в том, что вы пытались создать ключ настолбец (или столбцы), который слишком велик, чтобы быть ключом.Это может все еще быть в результате столкновения таблиц auth_.Например, модель Django может указывать ключ для идентификатора таблицы, ожидая, что он будет целочисленным столбцом, но вместо этого в вашей базе данных есть большой строковый столбец для идентификатора.

Я подозреваю, что вы можете продолжитьвозникли проблемы, если вы пытаетесь поместить базу данных Django и вашу базу данных в одну базу данных.Однако Django поддерживает несколько баз данных , поэтому вы можете поместить свою унаследованную базу данных в одну базу данных, а базу данных Django - в другую.Таким образом, они не могут наступать друг на друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...