Mysql 8 выдает ошибку при создании таблицы (выполнение команды migrate в django)

Django3.2 mysql 5.7

У меня есть имя модели BlackboardLearnerAssessmentDataTransmissionAudit, его длина 48 символов и оно имеет 1 поле not null. На mysql5.7 все работает нормально.

Но при попытке обновления с помощью mysql8+ migrations выдает ошибку Identifier name is too long.

Эта модель генерирует следующее имя в mysql8.5 blackboard_blackboardlearnerassessmentdatatransmissionaudit_chk_1 оно имеет 65 символов.

mysql8 limit info

У меня есть вопрос, какие возможные решения для устранения этой проблемы на mysql8?

Вы можете указать имя на стороне базы данных с помощью db_table мета-опции [Django-doc]. Например, с:

class BlackboardLearnerAssessmentDataTransmissionAudit(models.Model):
    # …
    
    class Meta:
        db_table = 'transmission_audit'

Таким образом, вы можете сначала переименовать таблицу, а затем обновить базу данных. Если вы можете начать с нуля, я бы посоветовал удалить миграции, в которых вы начинаете использовать модель BlackboardLearnerAssessmentDataTransmissionAudit. Таким образом, вы создаете все остальные модели с помощью одной миграции, чтобы никогда не использовать это длинное имя, но это предполагает, что вы можете начать миграцию с пустой базы данных.

Вернуться на верх