【发布时间】:2016-02-03 18:50:54
【问题描述】:
我正在尝试使用 MSSQL 服务器将我的 django 应用程序发布到天蓝色。我正在使用 django-azure-pyodbc 和 pyodbc 进行连接,虽然它在本地工作,但每当我使用 mssql 发布时,尽管发布成功,我都会收到内部服务器错误。如果我使用预打包的 sqllite3 服务器发布,它可以工作。我正在使用 Python 3.4、Django 1.8.4、pyodbc 3.0.10 和 django-pyodbc-azure 1.8.3.0 的虚拟环境。我的settings.py文件如下。
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'db_name',
'USER': 'u_name',
'PASSWORD': 'p_word',
'HOST': 'host.database.windows.net',
'PORT': '',
}
}
我已将 webapp 的传出 IP 地址添加到服务器,希望这是问题所在,但事实并非如此。检查诊断日志后,我发现比 500 错误更详细的解释,但我不确定我是否理解它。
ModuleName FastCgiModule
Data1 FASTCGI_RESPONSE_ERROR
读取 WSGI 处理程序时发生 Data2 错误:Traceback(大多数 最近通话最后):文件 "D:\home\site\wwwroot\env\lib\site-packages\sql_server\pyodbc\base.py", 第 14 行,在 import pyodbc as Database ImportError: DLL load 失败: %1 不是有效的 Win32 应用程序。处理过程中 上述异常,发生了另一个异常:Traceback(最近 最后调用):文件“D:\Python34\Scripts\wfastcgi.py”,第 711 行,在 main env, handler = read_wsgi_handler(response.physical_path) 文件 “D:\Python34\Scripts\wfastcgi.py”,第 568 行,在 read_wsgi_handler 中 返回 env,get_wsgi_handler(handler_name) 文件 “D:\Python34\Scripts\wfastcgi.py”,第 541 行,在 get_wsgi_handler 中 handler = handler() 文件“.\ptvs_virtualenv_proxy.py”,第 120 行,在 get_venv_handler 处理程序 = get_wsgi_handler(os.getenv('WSGI_ALT_VIRTUALENV_HANDLER')) 文件 “.\ptvs_virtualenv_proxy.py”,第 78 行,在 get_wsgi_handler 处理程序 = 处理程序()文件 “D:\home\site\wwwroot\env\lib\site-packages\django\core\wsgi.py”,行 14、在get_wsgi_application django.setup() 文件中 “D:\home\site\wwwroot\env\lib\site-packages\django__init__.py”,行 18、在设置apps.populate(settings.INSTALLED_APPS)文件 "D:\home\site\wwwroot\env\lib\site-packages\django\apps\registry.py", 第 108 行,在填充 app_config.import_models(all_models) 文件 "D:\home\site\wwwroot\env\lib\site-packages\django\apps\config.py", 第 198 行,在 import_models self.models_module = import_module(models_module_name) 文件 “D:\Python34\lib\importlib__init__.py”,第 109 行,在 import_module 中 返回 _bootstrap._gcd_import(name[level:], package, level) 文件 "",第 2254 行,在 _gcd_import 文件中 "",第 2237 行,在 _find_and_load 文件中 "",第 2226 行,在 _find_and_load_unlocked 文件“”,第 1200 行,在 _load_unlocked 文件“”,第 1129 行,在 _exec 文件中 “”,第 1471 行,在 exec_module 文件中 “”,第 321 行,在 _call_with_frames_removed 文件“D:\home\site\wwwroot\env\lib\site-packages\django\contrib\auth\models.py”, 第 41 行,在类 Permission(models.Model): 文件中 "D:\home\site\wwwroot\env\lib\site-packages\django\db\models\base.py", 第 139 行,在 new new_class.add_to_class('_meta', Options(meta, **kwargs)) 文件 "D:\home\site\wwwroot\env\lib\site-packages\django\db\models\base.py", 第 324 行,在 add_to_class value.contribute_to_class(cls, name) 文件中 "D:\home\site\wwwroot\env\lib\site-packages\django\db\models\options.py", 第 250 行,contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) 文件 "D:\home\site\wwwroot\env\lib\site-packages\django\db__init__.py", 第 36 行,在 getattr 中返回 getattr(connections[DEFAULT_DB_ALIAS], 项目)文件 “D:\home\site\wwwroot\env\lib\site-packages\django\db\utils.py”,行 240,在 getitem 后端 = load_backend(db['ENGINE']) 文件 “D:\home\site\wwwroot\env\lib\site-packages\django\db\utils.py”,行 111、在load_backend中返回import_module('%s.base' % backend_name) 文件“D:\Python34\lib\importlib__init__.py”,第 109 行,在 import_module return _bootstrap._gcd_import(name[level:], package, 级别)文件“”,第 2254 行,在 _gcd_import 中 _find_and_load 中的文件“”,第 2237 行 文件“”,第 2226 行,在 _find_and_load_unlocked 文件“”,第 1200 行,在 _load_unlocked 文件“”,行 1129,在 _exec 文件“”中,第 1471 行,在 exec_module 文件“”,第 321 行,在 _call_with_frames_removed 文件 "D:\home\site\wwwroot\env\lib\site-packages\sql_server\pyodbc\base.py", 第 16 行,在 raise ImproperlyConfigured("Error loading pyodbc 模块:%s" % e) django.core.exceptions.ImproperlyConfigured:错误 加载 pyodbc 模块:DLL 加载失败:%1 不是有效的 Win32 应用。标准输出:标准错误:
【问题讨论】:
-
我正在使用 32 位版本的 python 以及 pyodbc -- pyodbc-3.0.10-cp34-none-win32.whl
标签: python django azure django-pyodbc-azure