Исключение Django MigrationSchemaMissing в Azure SQL при использовании аутентификации принципала службы

Я работаю над проектом клиента, мы подключаем Azure SQL DB через аутентификацию принципала службы. Наш клиент предоставил нам доступ к Azure SQL и дал нам учетные данные для него. Так что для подключения к Azure SQL мы используем пакет mssql-django от Microsoft.

так выглядят конфигурации БД.

DATABASES = {

'default': {
    'ENGINE': 'mssql',
    'NAME': <db_name>,  
    'USER': <db_user>,
    'PASSWORD': <db_password>,
    'HOST': "<url>.database.windows.net",
    'PORT': '1433',
    'OPTIONS': {
        'driver': 'ODBC Driver 17 for SQL Server',
        'connection_timeout':60,
        'connection_retries':3,
        "extra_params": "Authentication=ActiveDirectoryServicePrincipal",
    
    },
}

Итак, когда я пытаюсь выполнить команду migrate, я получаю следующую ошибку

raise MigrationSchemaMissing(
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The specified schema name "<db_user>@<azure_tenant_id>" either does not exist or you do not have permission to use it. (2760) (SQLExecDirectW)'))

глядя на ошибку, мы можем определенно сказать, что либо схема не создана, либо пользователь БД, которого нам дали, не имеет разрешения на создание таблиц в БД.

Кто-нибудь может подсказать, что может идти не так, это точно не проблема Django или пакета django-mssql, а проблема со стороны Azure. Если это проблема со стороны Azure, то я могу связаться с нашим клиентом и попросить их исправить это со своей стороны. Так как у меня нет большого опыта работы с Azure/AzureSQL, любой совет очень поможет мне.

Заранее спасибо.

РЕДАКТИРОВАТЬ 1:

Когда я вошел в базу данных и не указал схему, когда я попытался создать таблицы вручную с SQL-сервера, он выдал ошибку разрешения. Моя догадка заключается в том, что с service principal, когда я запускаю команду migrate, она не выбирает схему по умолчанию, и, возможно, именно поэтому она может давать ошибку.

Что ж, моя догадка оказалась верной, не было схемы, назначенной нашему директору службы. Я связался с командой infra нашего клиента и попросил их установить dbo в качестве схемы по умолчанию для группы AD. После установки dbo в качестве схемы по умолчанию, я смог успешно запустить начальную миграцию в Django.

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