【发布时间】:2016-11-07 16:27:58
【问题描述】:
我从一位前同事那里继承了一个 Django 项目。我的第一项工作是将开发版本从我们的生产 Windows 服务器迁移到 RHEL 服务器。此 Django 应用程序连接到 Intranet 上的 Microsoft SQL Server。
我已经设置了与 Windows 上相同版本的 Python 和 Django,安装了相同的库,修复了硬编码的文件系统路径,并设置了一个与 Windows 上使用的相同的虚拟环境。
当我跑步时
python manage.py runserver
我得到了错误
Performing system checks...
System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x7eff42540de8>
Traceback (most recent call last):
File "/srv/P27_D19/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/srv/P27_D19/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 124, in inner_run
self.check_migrations()
File "/srv/P27_D19/lib/python2.7/site-packages/django/core/management/base.py", line 437, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/migrations/executor.py", line 20, in __init__
self.loader = MigrationLoader(self.connection)
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/migrations/loader.py", line 52, in __init__
self.build_graph()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/migrations/loader.py", line 203, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
self.ensure_schema()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema
if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/backends/base/base.py", line 231, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/backends/base/base.py", line 204, in _cursor
self.ensure_connection()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/srv/P27_D19/lib/python2.7/site-packages/django/db/backends/base/base.py", line 171, in connect
self.connection = self.get_new_connection(conn_params)
File "/srv/P27_D19/lib/python2.7/site-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
timeout=timeout)
django.db.utils.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
我已经安装了py-odbc、unixODBC 和unixODBC-devel。我通过其主机名 ping 了数据库服务器,它成功地找到了该服务器。我们有身份验证设置,因此它将使用 Active Directory 自动进行身份验证。
我注意到有时此错误消息已与 freetds 相关联,但 freetds 在此应用程序的生产版本中未使用,因此我不需要它(尽管我确实尝试安装它但它没有无论如何都帮不上忙)。
【问题讨论】:
标签: python sql-server django python-2.7 odbc