我无法通过python manage.py dbshell / loaddata连接到SQL Server数据库。
我在Ubuntu上安装了FreeTDS,unixODBC,pyodbc(3.0.7)和django-pyodbc: https://github.com/lionheart/django-pyodbc/
我可以成功运行syncdb和South迁移。但是,当我尝试运行dbshell或loaddata时,我收到此错误:
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
我可以使用isql和tsql从命令行连接。关于我缺少的任何想法?
答案 0 :(得分:0)
所以,我想出了问题。
如果要使用dbshell或loaddata,则需要使用命名的DSN而不仅仅是主机。我在/etc/freetds.conf,/etc/odbcinst.ini和/etc/odbc.ini中正确设置了这个,所以tsql和isql正在工作。
我在settings.py中使用了这个默认的DATABASE:
'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'。