我想使用ibm_db_django
连接到DB2数据库。
数据库在Windows 7 x64系统上运行。我还在同一系统上安装了ibm_db
和ibm_db_django
。我在这台电脑上开发了我的应用程序,一切正常。
现在我想将django项目部署到debian 6 x64系统。经过一些试验后,我安装了IBM Data Server Client
(版本9.5,修订包10)并添加了32位的ODBC驱动程序。在此之后,我可以安装ibm_db
和ibm_db_django
。现在我可以导入ibm_db
(只要我以db2inst1用户身份登录)。
问题是我无法连接到我的DB2服务器:
db2inst1@debian:~$ sqllib/db2profile
db2inst1@debian:~$ source /home/ai/project/ENV/bin/activate
(ENV)db2inst1@debian:~$ python /home/ai/project/sourcecode/manage.py shell
>>> from django.db import connections
>>> connections['db2'].cursor()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/ai/ENV/lib/python2.6/site-packages/django/db/backends/__init__.py", line 324, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/home/ai/project/ENV/lib/python2.6/site-packages/ibm_db_django/base.py", line 191, in _cursor
self.connection, cursor = self.databaseWrapper._cursor( None, kwargs )
File "/home/ai/project/ENV/lib/python2.6/site-packages/ibm_db_django/pybase.py", line 74, in _cursor
connection = Database.pconnect( **kwargs )
File "/home/ai/project/ENV/lib/python2.6/site-packages/ibm_db_dbi.py", line 634, in pconnect
raise _get_exception(inst)
OperationalError: ibm_db_dbi::OperationalError: [IBM][CLI Driver] SQL30081N Kommunikationsfehler. Verwendetes Kommunikationsprotokoll:"TCP/IP". Verwendete Kommunikations-API: "SOCKETS". Position, an der der Fehler erkannt wurde: "192.168.23.123". \xc3\x9cbertragungsfunktion, die den Fehler festgestellt hat: "connect". Protokollspezifische(r) Fehlercode(s): "110", "*", "*". SQLSTATE=08001 SQLCODE=-30081
我像这样定义了数据库连接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database_name',
'USER': 'username',
'PASSWORD': 'password',
'HOST': '',
'PORT': '',
},
'db2': {
'ENGINE' : 'ibm_db_django',
'NAME' : 'SAMPLE',
'USER' : 'username',
'PASSWORD' : 'password',
'HOST' : '192.168.23.123',
'PORT' : '50000',
'PCONNECT' : True, #Optional property, by default it is false
}
}
与Windows 7开发机器上运行的版本相比,我只更改了HOST。 Ping IP确实有效,连接应该是稳定的(debian-machine是连接到与物理windows-7-machine相同的路由器的虚拟机)。
有没有人有线索?