Сервер Django MSSQL в док-контейнере не будет мигрировать

ОБНОВЛЕНИЕ: решено

Я использую macOS, Django 2.0 на virtualenv и контейнер Docker с работающим SQL Server 2017. Я пытаюсь использовать этот пакет: https://github.com/michiya/django-pyodbc-azure

Это моя настройка DATABASES settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'TUTORIAS_DATOS',
        'HOST': '0.0.0.0',
        'PORT': '1402',
        'USER': '***',
        'PASSWORD': '***',
        'OPTIONS': {
            'driver': 'ODBC Driver 13 for SQL Server',
            'driver_charset': 'iso-8859-1',
        }
    }
}

Проблема в том, что когда я делаю python manage.py makemigrations, выполняется миграция, но когда я пытаюсь применить миграцию к базе данных (python manage.py migrate), я получаю:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, menu, sessions
Running migrations:
  No migrations to apply.

Вместо того, что я должен получить, если я использую sqlite (база данных Django по умолчанию), а именно:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, menu, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying menu.0001_initial... OK
  Applying sessions.0001_initial... OK

Я не знаю, в чем может быть проблема, теоретически, если я выполню эти шаги (в Windows), все будет работать нормально.

Соединение ODBC, по-видимому, работает, потому что, если я устанавливаю неправильное имя пользователя/пароль, я получаю сообщение об ошибке. Имя моей базы данных (контейнера, размещенного на 0.0.0.0:1402) действительно TUTORIAS_DATOS.


person Fjallbacka    schedule 25.04.2018    source источник
comment
Я не думаю, что проблема связана с базой данных. Можете ли вы попробовать перенести приложение за приложением? как ./manage.py makemigrations appname и ./manage.py migrate appname   -  person ruddra    schedule 25.04.2018
comment
Я пробовал, но все равно получаю тот же ответ, он выполняет миграцию, но не применяет ее.   -  person Fjallbacka    schedule 25.04.2018
comment
Вы выполняете эти миграции внутри док-контейнера?   -  person Robert Moskal    schedule 25.04.2018
comment
Можете ли вы убедиться, что приложение подключено к базе данных Docker? :)   -  person ruddra    schedule 25.04.2018
comment
@ruddra, как объяснялось ранее, я думаю, что он обнаруживает соединение, потому что, если я неправильно настрою пароль, я получаю сообщение об ошибке (о неправильном запуске сеанса), и если я настрою его правильно, ошибка не возвращается.   -  person Fjallbacka    schedule 25.04.2018
comment
@RobertMoskal, как я мог это сделать? Я запускаю миграции на venv   -  person Fjallbacka    schedule 25.04.2018
comment
Извиняюсь. Виноват. Попробуйте локальный хост для базы данных. Или 127.0.0.1   -  person Robert Moskal    schedule 25.04.2018


Ответы (1)


ОБНОВЛЕНИЕ: я использовал приложение TeamSQL, чтобы «видеть» таблицы в базе данных и делать запросы. Я немного знал, что приложение не работает должным образом. Я подключился к контейнеру и запросил через sqlcmd, и таблицы были там... Вот почему я не получил ответа «создание» от Django.

Проблема решена, все равно спасибо за комментарии.

person Fjallbacka    schedule 25.04.2018