sudoでのみ動作するODBC


1

unixODBCに問題があります。最新バージョンをインストールしましたが、現在はのみで動作していsudoます。私が使用したODBCをテストするためにisql。例:

# isql -v testTable
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

sudo

# sudo isql -v testTable
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

なぜそれがあり、どうすればそれを使用できsudoますか?

注:sudoインストール中は使用しませんでした。そして、私はそれをルートとしてインストールし、それをルートとして使用しようとしました。

更新

# ls -ltr /usr/local/psql/etc/odbcinst.ini
ls: cannot access /usr/local/psql/etc/odbcinst.ini: No such file or directory
# ls -ltr /etc/odbcinst.ini
-rw-r--r-- 1 root root 740 28 nov  8,04 /etc/odbcinst.ini

の内容 /etc/odbcinst.ini

~]# cat /etc/odbcinst.ini


# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver      = /usr/lib/psqlodbcw.so
Setup       = /usr/lib/libodbcpsqlS.so
Driver64    = /usr/lib64/psqlodbcw.so
Setup64     = /usr/lib64/libodbcpsqlS.so
FileUsage   = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver      = /usr/lib/libmyodbc5.so
Setup       = /usr/lib/libodbcmyS.so
Driver64    = /usr/lib64/libmyodbc5.so
Setup64     = /usr/lib64/libodbcmyS.so
FileUsage   = 1

更新 /etc/odbc.ini

[myDSN]
Description         = MySQL Connection
Driver              = MySQL
Database            = testTable
User                = mysql
Password            = ******
Port                = 3310
Server              = localhost
Socket              = /var/lib/mysql/mysql.sock

別の更新。sudoなし:

odbcinst -j
-bash: /usr/local/bin/odbcinst: No such file or directory

sudoを使って

sudo odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

回答:


2

/etc/odbcinst.ini、/etc/odbc.ini、~/.odbc.ini、および$ ODBCINIをチェックして、割り当てられている権限を確認します。コマンドを実行しているユーザーは、これらのファイルのいずれかに対する権限を持っていないか、別のユーザーの下で作成された場合はデータソースが定義されていない可能性もあります。

撮影一般的なエラーメッセージodbc.iniファイルは何だと私はそれに何を入れますか? さらに、DSNを追加したユーザーの/etc/odbc.iniおよび〜/ .odbc.iniに加えて、実行中のユーザーを確認します。これらが同じである場合、これを行う必要があるのは一度だけです。


一般的なエラーメッセージ

[iODBC] [ドライバーマネージャー]データソース名が見つからず、デフォルトドライバーが指定されていません。ドライバーをロードできませんでした、SQLSTATE = IM002

このメッセージが表示される理由はいくつかあります。最善の解決策は、何が起こっているかを追跡することです:アプリケーションはlibiodbcに対してリンクされており、何らかの方法でodbc.iniファイルを見つけようとしました-ODBCINI環境変数またはフォールバックパス(通常は/ etc / odbc.ini、コンパイル方法に応じて)。そのようなファイルが適切な場所に存在し、アクセス可能であることを確認する必要があります(特に、アプリケーションが異なるユーザー特権で実行されている場合-apache / phpをwww-dataユーザーとして実行している場合など)。

さらに、iODBCが適切なodbc.iniファイルを見つけたが、見つかったファイルに要求したDSNが含まれていない可能性があります。リクエストの構文を確認してください-ODBC接続文字列は正しいですか、リクエストしているDSNは存在しますか?上記の「odbc.iniとは何ですか?」というタイトルのこのFAQのセクションも参照してください。


odbc.iniとは

odbc.iniは、すべてのDSNと多くのODBC構成パラメーターが保存されるメイン構成ファイルです。iODBCには、このような構成ファイルを見つけるための検索パスがあります。最初に、環境変数ODBCINIが適切なファイルを指すかどうかを確認するために検査されます。または〜/ .odbc.ini(WindowsのユーザーDSNに類似)、次に/ etc / odbc.ini(「システム全体」)はフォールバック場所です。

odbc.iniファイルは、ODBCオプションのセット、DSNのリスト、およびデータソース定義自体の3つの部分で構成されています。したがって、

[ODBC Data Sources] 
PostgreSQL native localhost = PostgreSQL native driver 
PostgreSQL OpenLink localhost = PostgreSQL over OpenLink multi-tier

[PostgreSQL native localhost] 
Driver     = /usr/lib/postgresql/lib/libodbcpsql.so 
Host       = localhost 
Server     = localhost 
ServerName = localhost 
Database   = tim 
UserName   = tim 
UID        = tim 
Port       = 5432

[PostgreSQL OpenLink localhost]
Description     = PostgreSQL, over openlink MT 
Driver          = /opt/openlink/lib/oplodbc.so 
ServerType      = PostgreSQL95 
Host            = localhost 
Database        = tim 
Username        = tim 
LastUser        = tim 
User            = tim
FetchBufferSize = 99

[ODBC] 
;Trace = 1 
;TraceFile = /tmp/odbctrace.log ;Debug = 1
;DebugFile = /tmp/odbcdebug.log 

ODBCデータソースのリストは、ファイルodbcinst.ini(または環境変数ODBCINSTINI)と相関します:ドライバーの説明として使用されるすべての値について、odbcinst.iniに対応するセクションがあり、ドライバーとセットアップライブラリの両方がリストされます(支援するため) iodbcadm-gtkを使用したグラフィカル構成で、接続時に表示されるオプションが不十分な場合に入力ボックスを表示するためにも使用されます。

上記のように、属性のリストはドライバーに依存します。ネイティブのpostgresqlドライバーはopenlinkマルチティアから異なるものを呼び出すため、ドライバーのドキュメントを確認する必要があります。

iODBCでは、ダウンロード/インストール/コンパイルしたと仮定すると、ODBC DSNを構成するためのGTKベースのGUIもあります:iodbcadm-gtkを実行します。


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.