[解決済み】「データソース名が見つからず、デフォルトのドライバが指定されていません」と表示される理由と解決方法について教えてください。
質問内容
WindowsでODBC経由でデータベースに接続するプログラムを作ろうとしたら、次のようなエラーが発生した。
[Microsoft][ODBC Driver Manager] データソース名が見つからず、デフォルトのドライバも指定されていません。
私のコードは正しいはずです。別のPCでも動きました。
なぜこのエラーが発生するのでしょうか?また、どうすれば直るのでしょうか?
解決方法は?
このエラーの原因は何ですか?
このエラーメッセージは、簡単に言うと、ODBCドライバーマネージャが接続文字列またはDSNで指定したドライバーを見つけることができなかったということを伝えています。
この場合、3つの共通した原因が考えられます。
- 使用しようとしたドライバがシステムにインストールされていない
- ドライバはインストールされているが、実行中のコードのビットレートと一致しない。
- ドライバ名の入力に誤りがあります。
システムにインストールされているドライバを確認する方法は?
システムにインストールされているドライバは、ODBCデータソースアドミニストレータで確認することができます。これを開くには
⊞ Win
+
R
と入力します。
odbcad32.exe
. 次に、タブを確認します。
ドライバ
をクリックすると、インストールされているドライバが表示されます。その
名称
列は、接続文字列または DSN で使用する正確な名前を示しています。
64ビットWindowsの場合、インストールされている64ビットドライバのみが表示されます。
システムです。どの32ビット・ドライバがインストールされているかを確認するために
⊞ Win
+
R
と入力します。
C:\Windows\SysWOW64\odbcad32.exe
に、そして
ドライバ
のタブを再度クリックします。
ドライバはインストールされましたが、ビット数が間違っているかもしれません。
その場合、プログラムが動作しているビットレートを調整するか、異なるビットレートを持つドライバをインストールするか、2つの選択肢があります。
Windowsに標準でインストールされているドライバの中には、32ビット版しかないものがあります。これらは64ビットのプログラムでは使用できません。
通常、プログラムがどのビット数で動作しているかは、タスクマネージャーで確認することができます。Windows 10 では、すべての 32 ビット プログラムの名前に (32 ビット) が追加されています。最近のプログラミング言語や環境は、デフォルトでは64ビットで動作しますが、32ビットに切り替えることも可能です。しかし、プログラミング言語の違いによる詳細については、この質問の範囲外です。
ドライバ名を間違えて入力していないことを確認するにはどうしたらいいですか?
ODBCの接続文字列は以下のようなものです。
DRIVER={DriverName};ParameterName1=ParameterValue1;ParameterNameN=ParameterValueN;
ドライバ名の部分は、特殊文字を含む可能性がある場合は中括弧で区切り、ODBCデータソース管理で見つけたインストール済みのドライバ名と正確に一致させる必要があります(スペースやタイプ文字を含みますが、大文字は除きます)。
なお、デプロイされたコードでは、ドライバの は コードを実行しているコンピュータ/サーバー上に存在すること。
ドライバを持っていない、またはビット数が間違っているのですが、どこで入手できますか?
どのドライバを使うかによります。
一般的なドライバの一覧とダウンロード先(32ビットと64ビットをすべて同じURLで提供)です。
- は Microsoft ODBC Driver 17 for SQL Server
- の一部であるMicrosoft Accessデータベースドライバ。 マイクロソフトアクセスデータベースエンジン . 32ビットと64ビットのAccess ODBCドライバーの同時インストールはサポートされていないことに注意してください。
- は MySQL ODBC コネクタ オラクル
- オープンソースの SQLite ODBC ドライバ Christian Werner著 (非公式)
- psqlODBC PostgreSQLの公式ドライバです。
使用したいドライバがリストにない場合、その場所は通常Googleで簡単に見つけることができます。
関連
-
[解決済み】PostgreSQL - SQLの状態です。42601構文エラー
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] Liquibase ロック - 理由は?
-
[解決済み] なぜOracleはoci.dllを見つけられないのでしょうか?
-
[解決済み] Oracle (ORA-02270) : この列に一致するユニークキーまたはプライマリキーがありません-リストエラー
-
[解決済み] Hibernateです。ManyToOne生成フィールドraw(255)
-
[解決済み] 部分依存性(データベース)
-
[解決済み] スキーマとテーブルとデータベースの違いは何ですか?
-
[解決済み】mongoシェルですべてのデータベースを一覧表示する方法は?
-
[解決済み】データベースの正規形とは何ですか、またその例を教えてください。[クローズド]
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベースの記号は何を表しているのですか?
-
[解決済み] 多くのSQLiteデータベースをマージするにはどうすればよいですか?
-
[解決済み] どのようにneo4jデータベースをリセット/クリア/削除するには?
-
[解決済み] FactテーブルとDimensionテーブルの違い?
-
[解決済み] バルクロードとは何ですか?
-
[解決済み] スキーマとテーブルとデータベースの違いは何ですか?
-
[解決済み】データベースの結合はいつ、なぜ高くつくのですか?
-
[解決済み】非常に大きなデータベースファイルを持つsqliteのパフォーマンス特性は何ですか?[クローズド]。
-
[解決済み】BASE用語の解説
-
[解決済み】Non-Repeatable ReadとPhantom Readの違いは何ですか?