web-dev-qa-db-ja.com

[unixODBC] [ドライバーマネージャー]データソース名が見つからず、デフォルトのドライバーが指定されていない(ODBC :: Error)の修正方法

/local/rvm/gems/Ruby-1.9.2-p320/gems/activerecord-sqlserver-adapter-3.2.12/lib/active_record/connection_adapters/sqlserver_adapter.rb:455:in `initialize': IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified (ODBC::Error)

私は自分のアプリの作業用コピーを持っていますが、突然一晩でシステムをそのままにして、このエラーが表面化し始めました。誰でもこれを修正する方法を教えてもらえますか?

7
Clone

あなたが私たちに取り組むことを何も与えなかったので、あなたの質問に対する決定的な答えはありません。

ただし、これには次の理由が考えられます。

  1. 指定したDSNがユーザーまたはシステムのodbc.iniファイルで見つかりませんでしたodbcinst -jを実行して、これらのファイルの場所を見つけます誰かがファイルを変更または削除しましたか?

  2. ODBCINI env varまたはODBCSYSINI env varを設定して、unixODBCがodbc.iniファイルとodbcinst.iniファイルの場所を指すようにしましたが、これらは設定(または変更)されていません。

  3. 誰かがあなたのODBCドライバを削除または移動しました

  4. 通常、ユーザーAとしてコードを実行し、ユーザーBとしてコードを実行し、ユーザーデータソースを使用するか、ODBCINI env varを設定します。

...おそらく他の人もいますが、より良い情報を提供していただければ、推測する必要はありません。

11
bohica

FreeTDSのセットアップと構成 から始める必要があります。これは私のファイルのサンプル設定ですが、他のバリアントも動作するはずです。 1つの違いは、私はDjangoを使用していることですが、以下の結果は最終的にはまだ機能しますが、SQL認証の方がWindows認証よりもはるかにうまく機能します。

/etc/freetds/freetds.confから(サーバー名に対してDNSがアクティブでない場合は、サーバーのIPを使用)。

# A typical Microsoft server
[MyServer]
        Host = 10.0.0.10\path
        port = 1433
        tds version = 7.0

/etc/odbcinst.iniから

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

/etc/odbc.iniから

[ServerDSN]
Description = "Some Description"
Driver = FreeTDS
ServerName = MyServer
Server = ip_address
Port = 1433
Database = DBNAME

次に、このコマンドは私をデータベースに接続します。

tsql -S MyServer -U username@servername -P password

7
tufelkinder

使用しているドライバーはわかりませんが、更新によって状況が変わったと思います。

Isqlを使用してデータソースに接続できますか?

/etc/odbc.iniおよび/etc/odbcinst.iniファイルのコピーを投稿できれば、接続先を確認できます。

0
Nick Gorham

ヒントですが、私の場合、Driver = FreeTDSおよびodbc.iniの両方の変数「servername」と「server」では不可能でした。 「server = ip」と「Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so」のみを正常に機能させました。

0
Marcelo