【问题标题】:Django MSSQL server on docker container won't migrateDocker 容器上的 Django MSSQL 服务器不会迁移
【发布时间】:2018-04-25 12:31:19
【问题描述】:

更新:已解决

我在 virtualenv 上使用 macOS、Django 2.0,以及启动并运行 SQL Server 2017 的 Docker 容器。我正在尝试使用这个包: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

【问题讨论】:

  • 我认为问题与数据库无关。您可以尝试逐个应用迁移吗?比如./manage.py makemigrations appname./manage.py migrate appname
  • 我试过了,但我仍然得到相同的响应,它进行了迁移但没有应用它。
  • 您是否在 docker 容器内运行这些迁移?
  • 你能确保应用程序连接到 docker 数据库吗? :)
  • @ruddra 正如我认为它检测到连接之前所解释的那样,因为如果我错误地设置了密码,我会收到一个错误(错误的会话初始化),如果我设置正确,则不会返回任何错误

标签: python django docker pyodbc django-pyodbc-azure


【解决方案1】:

更新:我使用 TeamSQL 应用程序来“查看”数据库中的表并进行查询。我几乎不知道该应用程序无法正常工作。我已连接到容器并通过sqlcmd 进行查询,并且表格在那里...这就是为什么我没有从 Django 得到任何“创建”响应。

问题已解决,无论如何感谢 cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2016-11-14
    • 1970-01-01
    • 2023-02-10
    相关资源
    最近更新 更多