错误 "sqlserver_ado isn't an available database backend" (IIS 上的 PyISAPIe)



当使用IIS服务Django和Django -mssql处理事务时,我有问题连接我的Django项目到SQL Server 2008。我使用IIS 7和64位ActivePython 2.7。

这是我的安装包列表:

Django==1.4.5
distribute==0.6.19
django-mssql==1.2
pypm==1.3.4
pythonselect==1.3
pywin32==214
virtualenv==1.6.1
wsgiref==0.1.2

这是堆栈跟踪的最后一位:

  File "C:Python27libsite-packagesdjangodb__init__.py", line 40, in 
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:Python27libsite-packagesdjangodb__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:Python27libsite-packagesdjangodbutils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:Python27libsite-packagesdjangodbutils.py", line 51, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using django.db.backends.sqlserver_ado instead.
Error was: DLL load failed: The specified module could not be found.

如果我将sqlserver_ado文件夹添加到C:Python27Libsite-packagesdjangodbbackends,并将settings.py中的数据库设置从'ENGINE': 'sqlserver_ado',更改为'ENGINE': 'django.db.backends.sqlserver_ado',,那么我将获得略有不同的堆栈跟踪。

  File "C:Python27libsite-packagesdjangodbbackendssqlserver_adobase.py", line 6, in 
    import dbapi as Database
  File "C:Python27libsite-packagesdjangodbbackendssqlserver_adodbapi.py", line 49, in 
    import pythoncom
  File "C:Python27libsite-packagespythoncom.py", line 2, in 
    import pywintypes
  File "C:Python27libsite-packageswin32libpywintypes.py", line 124, in 
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:Python27libsite-packageswin32libpywintypes.py", line 64, in __import_pywin32_system_module__
    import _win32sysloader
ImportError: DLL load failed: The specified module could not be found.

如果我连接到一个sqlite数据库而不是SQL Server,应用程序工作正常。如果我使用开发服务器运行项目,连接到SQL server工作正常。
所以问题似乎是IIS/pyisapi和django_mssql的组合。

其他几个问题也提到了类似的问题。这些问题都是通过在系统路径上获取python dll来解决的。我试过(通过检查路径和复制文件到c:python2.7,但我得到同样的错误。

  • https://stackoverflow.com/questions/13965251/django-error-in-apache-2-2-database-backend-fails-in-production-but-successful
  • pywintypes27.dll在Apache, Django, pywin32, Python2.7和mod_wsgi中找不到
  • http://code.google.com/p/django-mssql/issues/detail?id=107

最后一点信息,这里是开发服务器版本和IIS/pyisapi版本的sys.path

开发(工作):

C:UsersAdministratorDesktopdjango test C:Python27python27.zip C:Python27DLLs C:Python27lib C:Python27libplat-win C:Python27liblib-tk C:Python27 C:UsersAdministratorAppDataRoamingPythonPython27site-packages C:Python27libsite-packages C:Python27libsite-packageswin32 C:Python27libsite-packageswin32lib C:Python27libsite-packagesPythonwin C:Python27libsite-packagessetuptools-0.6c11-py2.7.egg-info
IIS(失败):

C:PyISAPIe C:Windowssystem32python27.zip C:Python27Lib C:Python27DLLs C:Python27Liblib-tk c:windowssystem32inetsrv C:Python27 C:Python27libsite-packages C:Python27libsite-packageswin32 C:Python27libsite-packageswin32lib C:Python27libsite-packagesPythonwin C:Python27libsite-packagessetuptools-0.6c11-py2.7.egg-info c:inetpubPyApp

任何提示或建议,从这里去哪里将不胜感激。接下来,我将尝试正常(即非活动)Python,看看这是否会产生影响。

从头开始安装64位python并遵循这里的建议。问题一定是由于Active Python的一些愚蠢之处。

我注意到有一件事可能对你有帮助。

  • 正常安装python和pywin32(使用链接站点的可执行文件),C:Python27Libsite-packages包含一个名为pywin32_system32的文件夹,其中包含需要复制到C:Python27以解决问题的可执行文件。
  • 在Active Python安装中,这个目录不存在。

我还注意到两种安装方法(win32win32comwin32comext)的目录包含的文件略有不同。

相关内容

  • 没有找到相关文章

最新更新