0

我无法通过 python manage.py dbshel​​l / loaddata 连接到 SQL Server 数据库。

我在 Ubuntu 上设置了 FreeTDS、unixODBC、pyodbc (3.0.7) 和 django-pyodbc: https ://github.com/lionheart/django-pyodbc/

我可以成功运行 syncdb 和 South 迁移。但是,当我尝试运行 dbshel​​l 或 loaddata 时,我收到此错误:

[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

我可以使用 isql 和 tsql 从命令行进行连接。关于我所缺少的任何想法?

4

1 回答 1

0

所以,我发现了问题所在。

如果要使用 dbshel​​l 或 loaddata,则需要使用命名 DSN 而不仅仅是主机。我在 /etc/freetds.conf、/etc/odbcinst.ini 和 /etc/odbc.ini 中正确设置了此设置,因此 tsql 和 isql 可以正常工作。

我在settings.py中使用这个默认数据库:

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'HOST': 'hostname.domain.com,1433',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

我不得不将其更改为:

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'dsn': 'dsn_name',
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

您会注意到第一个(损坏的)示例使用了“HOST”,而第二个(工作)示例在“OPTIONS”下使用了“dsn”。”

于 2014-06-24T19:16:23.430 回答