unixODBC:データソース名が見つからない、デフォルトドライバが指定されていないに関する質問
まず、環境です。
OS platform: RHEL6 x86_64
unixODBC version: 2.3.1
unixODBC を使用して postgresql データベースに接続するとエラーが報告される。
SQLDriverConnect]を実行中に、ドライバから以下の診断結果が報告されました。
IM002:1:140733193388032:[unixODBC][Driver Manager] データソース名が見つからず、デフォルトドライバも指定されていません。
接続に失敗しました
非常にわかりにくく、インターネットで調べてから理解するのに時間がかかりました。
最初にエラーメッセージで検索します。
http://www.easysoft.com/developer/interfaces/odbc/sqlstate_status_return_codes.html
ODBCデータベース接続文字列が見つからないか、デフォルトのODBCドライバがインストールされていないとしてエラーを特定しました。
エラー発生時の私のodbc.iniの設定は以下の通りです。
[DB3]
Description = SymfowareServer
Driver = SymfoV12
Database = postgres
Servername = {primary,standby}
UserName = postgres
Password = postgres
Port = {26500,26501}
TargetServer = primary
SSLMode = verify-full
SSLServerCertCN=Common
ReadOnly = 0
[DB4]
Description = SymfowareServer
Driver = SymfoV12
Database = postgres
Servername = {standby,primary}
UserName = postgres
Password = postgres
Port = {26501,26500}
TargetServer = prefer_standby
SSLMode = verify-full
SSLServerCertCN=Common
ReadOnly = 0
odbcinst.iniの設定は以下の通りです。
[SymfoV12]
Description = ODBC for Symfoware Open V12.1.1
#Driver = /opt/symfoclient64/odbc/lib/psqlodbcw.so
# Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /opt/symfoclient64/odbc/lib/psqlodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
Threading = 2
unixODBCには、リンクをテストするためのコマンドが付属しています。
isql -v DB3
実行すると、プロンプトが表示されます。
[IM002][unixODBC][Driver Manager] データソース名が見つからず、デフォルトドライバも指定されていません。
[ISQL]ERROR: SQLConnect できませんでした。
まず、postgresqlのドライバpsqlodbcがインストールされているかどうかを確認したところ...。
インストールされてないなんて!!!!
そこで、psqlodbcをインストールします。この時点の最新バージョンはpsqlodbc-09.05.0400です。
#tar zxvf psqlodbc-09.05.0400.tar.gz
#cd psqlodbc-09.05.0400
#. /configure --with-unixodbc --with-libpq=/usr/local/pgsql
#make
#make install
インストールに成功し、デフォルトのドライバが /usr/local/lib/psqlodbcw.so の下に配置されました。
インストール後、テストを続けますが、まだエラーが出ます!!!。
引き続き、Baiduで、以下を参照してください。
http://china.ygw.blog.163.com/blog/static/687197462013418101335419/
半日ほど探して、ようやく問題が判明しました。環境変数が正しく設定されておらず、設定ファイルが見つからないことが判明しました。以前は正しく設定されていたのですが、unixODBCのディレクトリ名を変更したため、設定ファイルが見つからなくなってしまったのです。odbcinst -j コマンドを実行することで、現在の設定情報の状態を確認し、該当する設定情報のパスが正しいかどうか確認することができます。
私の設定は以下の通りです。
unixODBC 2.3.1
DRIVERS ............ : /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES... : /usr/local/etc/ODBCDataSources
USER DATA SOURCES... : /root/.odbc.ini
SQLULEN Size ....... : 8
SQLLEN Size ........ : 8
SQLSETPOSIROW Size.: 8
ODBCINIとODBCSYSINI環境変数を設定し直すだけです。
ODBCINIにはodbc.iniのファイルパスのフルネーム、ODBCSYSINIには設定ファイルのパスが設定されていますが、私の設定は以下の通りですので参考にしてください。
export ODBCINI=/usr/local/etc/odbc.ini
export ODBCSYSINI=/usr/local/etc
isqlで再度テスト。
isql -v DB3
<イグ
すべてOKです。
取得元:https://www.cnblogs.com/flying-tiger/p/5950600.html
関連
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
2021MySql-8.0.26インストール詳細チュートリアル(ベビーシッターレベル)
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
解決方法 テーブルの定義が正しくありません。自動列は1つだけで、キーとして定義する必要があります。
-
解決策: テーブルの定義が正しくありません。
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
01. プロシージャの結果セットを持つ一時テーブルへのSELECT INTO
-
Oracleデータベースの挿入データエラーです。ORA-06550
-
PDOデータベース接続エラー。SQLSTATE[HY000] [2002] そのようなファイルやディレクトリはありません。
-
MySQL上級SQLステートメント
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
MySQLデータベースのクエリ機能を使用する際に、グループ関数の使用が無効である問題の解決方法
-
SQL SERVER データベース SELECT INTO および INSERT INTO の使用法(テンポラリテーブルへのデータ挿入を含む)
-
[Mac] sudo mongod コマンド、プロンプトコマンドが見つかりません。
-
mongodbの更新操作の更新
-
は、GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
ORA-06550 "の解決策。1 行目、7 列目"
-
ORA-65096 無効な共通ユーザー名またはロール名
-
アプリケーションから DB2 SQL Error が報告され続けます。SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.17.29
-
AttributeError: 'function' オブジェクトには 'cursor' という属性がありません。