1

尝试检查 MsSql 数据库时出现此错误:

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
# Unable to inspect table 'test_table'
# The error was: __new__() missing 1 required positional argument: 'collation'

这是我使用的命令:

python manage.py inspectdb test_table --database=some_db --verbosity=3

这是settings.py中的连接:

  'some_db':{
        'ENGINE': 'sql_server.pyodbc',
        'NAME': os.environ['name'],
        'USER': os.environ['user'],
        'PASSWORD': os.environ['pw'],
        'HOST': os.environ['db'],
        'PORT': os.environ['port'],
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
            'unicode_results': True

        },
    }
4

4 回答 4

1

我发现 Mssql 版本和 pyodbc 版本之间存在版本不匹配:不支持 Mssql 版本。我直接使用 django-pyodbc-azure 而不是 pyodbc 解决了!

于 2021-04-26T08:32:09.693 回答
1

djagno 3.2 中似乎有一些排序规则更改会导致此问题,不幸的是 django-mssql-backend 并未正式支持 django 3.2(截至 2021 年 11 月)。

见:https ://code.djangoproject.com/ticket/32767

虽然在大多数情况下我可以使用 django 3.2 运行 django-mssql-backend,但我暂时恢复到 django 3.1 以便执行inspectdb

相关讨论在:https ://stackoverflow.com/a/67305117/341329

于 2021-11-11T14:08:50.503 回答
0

我遇到了同样的问题,但找到了解决方案:用户不是 db_owner 角色的一部分。换句话说,您可能没有足够的权限。在您的 mssql 中设置数据库的用户所有者。

于 2021-04-22T12:11:21.073 回答
0

第三方后端 django-mssql-backend 对于 Django 3.2 仍然存在此问题。但是,现在有一个名为 mssql-django 的 django-mssql-backend 分支,由 Microsoft 维护。这个新的分支确实说它支持 Django 3.2 并为我工作。

https://github.com/microsoft/mssql-django

于 2021-11-23T16:28:19.523 回答