मुझे लगता है कि मेरा प्रश्न Trying to query SQL Server from django running on Linux - Can't open lib '/path/to/libtdsodbc.so' का डुप्लिकेट कम है, लेकिन उत्तर पूरी तरह से उपयोगी नहीं है।dssango-pyodbc-azure के साथ MSSQL से कनेक्ट करने का प्रयास फ़ाइल में त्रुटि नहीं मिली
मैं निम्नलिखित बातें उपयोग कर रहा हूँ:
- उबंटू 15,04
Python3
Django 1.9
(pip3 के माध्यम से स्थापित)freetds-dev 0.91-6build1
के माध्यम से स्थापित apt-getdjango-pyodbc-azure
/django-pyodbc
pip3 के माध्यम से स्थापित- एमएसएसक्यूएल 2012
जब कनेक्ट करने का प्रयास, एक python3 manage.py inspectdb
मैं निम्नलिखित स्टैक ट्रेस प्राप्त कर:
Traceback (most recent call last):
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 171, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python3.4/dist-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
timeout=timeout)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 399, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/inspectdb.py", line 25, in handle
for line in self.handle_inspection(options):
File "/usr/local/lib/python3.4/dist-packages/django/core/management/commands/inspectdb.py", line 38, in handle_inspection
with connection.cursor() as cursor:
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 231, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 204, in _cursor
self.ensure_connection()
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 95, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/local/lib/python3.4/dist-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 199, in ensure_connection
self.connect()
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 171, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python3.4/dist-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
timeout=timeout)
django.db.utils.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)")
मैं संपादित किया है base.py बाहर कनेक्शन स्ट्रिंग यह उपयोग कर रहा है, जो मुद्रित करने के लिए:
DRIVER=FreeTDS;DATABASE=test;PWD=test;UID=sa;PORT=1433;SERVER=10.13.36.223
डेटाबेस के लिए मेरे settings.py लगता है:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'test',
'USER': 'sa',
'PASSWORD': 'test',
'HOST': '10.13.36.223',
'PORT': '1433',
'AUTOCOMMIT': True,
'OPTIONS' : {
'host_is_server': True
}
}
}
मेरी धारणा यह है कि कनेक्शन str के DRIVER
भाग odbc ड्राइवर के निष्पादन योग्य के लिए पूरी तरह से योग्य पथ होना चाहिए, और अभी यह "फ्रीटीडीएस" पर सेट है, जो फ़ाइल के रूप में मौजूद नहीं है। मेरे प्रश्न तब हैं:
- यदि मेरी धारणा सही है, तो मैं ड्राइवर के लिए मूल्य कैसे बदलूं?
- यदि मेरी धारणा गलत है, तो वास्तव में क्या गलत है, और मैं इसे कैसे हल करूं?
: निम्नलिखित शामिल करने के लिए
sudo apt-get install tdsodbc
- संपादित
/etc/odbcinst.ini
: