DjangoのデータベースアクセスでIM002または08001エラーが出る

エラー内容

InterfaceError
'IM002', '[IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 (0) (SQLDriverConnect)'

発生状況

Python Djangoでpyodbcを使って、Microsoft SQL Serverに接続している。
開発環境ではアクセスできるが、実行環境のIISへデプロイしたところエラーが出た。
pyodbc3.PNG

環境

開発環境

-Windows10 64bit
-Visual Studio Community 2017 ver.15.4.1
-Python ver.3.6.1
-Anaconda ver.4.4.0
-Django ver.1.11.11
-django-pyodbc ver.1.1.3

実行環境

-Windows7 32bit
-IIS Version 7.5.7600.16385
-Django ver.2.0.3
-django-pyodbc ver.1.1.3

解決方法とソース

接続文字列を修正することで、解決した。
開発環境で正常に動いていた接続文字列はこちら。

db_access.py
connectionString = 'DRIVER={ODBC Driver 13 for SQL Server}; 
SERVER='+'localhost'+'; DATABASE='+'database'+';
UID='+'sa'+'; PWD='+'password'

実行環境の方は、こう書き換えたら正常に動いた。

db_access.py
connectionString = 'DRIVER={SQL Server};
SERVER='+'localhost'+'; DATABASE='+'database'+';
UID='+'sa'+'; PWD='+'password'

なお開発環境の接続文字列を上記のように変えると、また異なるエラーが出た。

OperationalError
'08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (5)'

pyodbc2.PNG

環境によってDjangoのバージョンが一致しないことが原因の模様。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.