2014-06-24 32 views
0

我無法通過python manage.py dbshel​​l/loaddata連接到SQL Server數據庫時遇到問題。與python manage.py dbshel​​l/loaddata使用django-pyodbc時遇到困難

我從這裏設立在Ubuntu與freetds的,unixODBC的,pyodbc(3.0.7)和Django的pyodbc: https://github.com/lionheart/django-pyodbc/

我可以成功運行執行syncdb和南方遷移。然而,當我嘗試運行dbshel​​l或loaddata,我得到這個錯誤:

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

我可以使用isql和T-SQL命令行連接。關於我失蹤的任何想法?

回答

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' ,而第二個(工作)示例在'選項'下使用'dsn'。

+0

我將TDS版本從8.0改爲7.2:http://www.freetds.org/userguide/choosingtdsprotocol.htm - I也可以確認這適用於SQL Serv呃2012年和2014年。 – FlipperPA