• ベストアンサー
  • すぐに回答を!

Win7 64bit:ODBC経由でMDB接続不可

こんにちは PHPからODBC経由で.mdbファイルを操作しようとして躓いています。 OSはWindows 7 64bitで、インストールしているMS Officeは32ビット (Office 2007)ですが、MS Accessはインストールしていません(先日、MS Accessを含むOffice 最新版の試用版をインストールしたのち削除しました)。 「C:\Windows\SysWOW64」以下の「odbcad32.exe」を管理者権限で開いてシステムDSNにドライバを設定してPHPから接続を試みたのですが、エラー「IM014」が返ってきました。調べると「指定されたDNSには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています」ということだそうです。 「C:\Windows\System32」以下の「odbcad32.exe」でドライバを設定すればよいのかと思いましたが、管理者権限で開いても指定可能なドライバが表示されません。 どういった設定をすべきでしょうか?

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • nda23
  • ベストアンサー率55% (773/1384)

PHP_INT_SIZE で32bit版か64bit版かはわかりません。 http://www.php.net/manual/ja/language.types.integer.php 一般に、64bitOSにPHPの32bit版は入らないはず。 古いバージョンでは入りますが、最新版はダメです。 タスクマネージャでphp.exeを見て*がなければ64bitです。 大原則として、64bitプロセス空間には64bitのDLLしか ロードできません。同じく32bitプロセスには32bitのDLL しかロードできません。ODBCがDLL実装(これが大半)で あれば32bit版のODBCを64bitPHPで扱うことはできません。 プロセス間通信を使って、異なるプロセスでODBCを稼動 させ、データを通信により受け渡します。プロセスが違う ので、64bit/32bitの壁をスルーできます。但し、これを実装 するには独自にPHPエクステンションを作るか、exe型の COMモデルを使うしかないと思います。 私は前者は開発した経験がありますが、後者は経験が ありません。PHPエクステンションの開発は非常に難しく、 Windowsのプロセスにやスレッドに関する技術、PHPの データ管理法、DLLとのインターフェースなどの知識が 無いと作れません。 また、exe型のCOMモデルは非常に少なく、Office系での 実装しか見たことがありません。 Accessがインストールされていれば、とりあえず、COM オブジェクトでAccess.Applicationをインスタンス化して 操作を試みます。成功すれば何とかなると思います。 PHPとCOMでググってみてください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 ACCESSはインストールされていないんです。 むしろ、購入してACCESSでアプリケーションを作っちゃった方が楽な気もしてきます。 別の方法を検討します。

その他の回答 (2)

  • 回答No.3

PHPの32ビット版って最新版だとインストールできないんですか? ググってみたけど、それらしい情報が無かったけど… PHPを32ビットにできないなら、Accessをやめた方が良いかも。 もともと、Accessってあんまり信頼性は高くないし。 PostgreSQLあたりがライセンスフリーで良いかと。64ビット版ももちろんあるし。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

面倒なところに手を出してしまった感じです。 今までPHPとMySQLでいろいろ作っていたのでMDBファイルだろうが大差ないだろうと甘く見ていました。 もともと業務用で使う社内ツールなのであんまりリソースも割けません。現在、ExcelのVBAで操作できるコードを書いてみたところ、意外に行けそうなのでこちらの方面を検討してみます。VBAは得意ではないですが、頑張ります。

  • 回答No.1

PHPが64ビット版で、ODBCドライバが32ビット版って感じなんでしょうね。 PHPを32ビット版に変えるか、ODBCドライバの64ビット版を入手するか、どちらかですね。 MDBの64ビット版ドライバってのは探してみたけど、無さそうな感じ。 32ビット版のPHPを使うしかないかな。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 PHPのバージョンを調べたところ、32ビットのようです。。。 「echo PHP_INT_SIZE;」で4が表示されました。。

関連するQ&A

  • 64bit環境で32bitのodbc参照

    いつもお世話になっております。 以下のC#のプログラムを windows 7 home premium(x64) visual studio 2008 express edtion (x86) でビルドして実行すると 一番最後の行(da.Fill(dt);)のところで ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 という例外がでます。 //CSVファイルのあるフォルダ string csvDir = @"D:\"; //CSVファイルの名前 string csvFileName = "test.csv"; //接続文字列 string conString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + csvDir + ";Extensions=asc,csv,tab,txt;"; System.Data.Odbc.OdbcConnection con = new System.Data.Odbc.OdbcConnection(conString); string commText = "SELECT * FROM [" + csvFileName + "]"; System.Data.Odbc.OdbcDataAdapter da = new System.Data.Odbc.OdbcDataAdapter(commText, con); //DataTableに格納する DataTable dt = new DataTable(); da.Fill(dt); たしかにスタート->コントロールパネル->管理ツール->データソース(ODBC)の ドライバーの欄を見るとMicrosoft Text Driverが入っていません。 しかし、 C:\Windows\SysWOW64\odbcad32.exe を実行してドライバーを見ると Microsoft Text Driver (*.txt; *.csv) が入っているので、32ビットのほうには入っていると思っています。 下記サイトに以下のような記載があるのですが、 http://technet.microsoft.com/ja-jp/windows/gg182762 ----------------------------------------------------------------------- データベースに接続する構成ができずにデータベースに接続できないといったことが起こります。しかし、32 ビットと 64 ビットの特性を正しく理解できれば、「%windir%\SysWOW64\odbcad32.exe」へアクセスすることで今まで通り ODBC ドライバを扱うことができます。 ----------------------------------------------------------------------- %windir%\SysWOW64\odbcad32.exeにアクセスするようにするには、 どのようなプログラムを書けばよいのでしょうか。 どなたかご教授よろしくお願いいたいます。

  • Windows2008サーバーでODBC接続

    Windows2003サーバーからWindows2008サーバーにしたらODBC接続出来なくなりました。 Windows2003サーバーの時にはうまくいったいたので、いろいろ調べてみたのですが、 64ビットOSで 32bit版ODBC設定は、「C:\Windows\SysWOW64\odbcad32.exe」より行う。 と書いてあったので、そのようにしたのですが、 ODBCのシステムDSNの設定自体は認識しているようなのですが、 「指定された_DSN_には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています」 とIISのログに出ます。 ちなみにページのASPの部分に Set conn = Server.CreateObject("ADODB.Connection") Set rs_AP = Server.CreateObject("ADODB.Recordset") conn.open "DB001" と書いています。 データベースはAccess2003で作成したものです。 Access2003がダメなのかと思いAccess2007で作成したものを、Access2007以降のドライバーをダウンロードしてインストールし設定してやってみたのですが、同じ結果でした。 OSのインストールからIISの設定までに何か不備があるのでしょうか? 中途半端な初心者で申し訳ないのですが、手取足取り、ご教授願えないでしょうか? よろしく御願いします。

  • odbc x64->32mdbアクセスできません

    32ビットの設定画面で名前をkb00_64としパスを設定しました。 64ビットのデータソースアドミニストレータのトレースで 終了しません。 またこの状況でアプリを動作させますとデータソース名既定のドライバーが ありませんとなります。 データベースエンジンi86がインストールしてあります。 OFFICEはインストールしていません。 32ビットOSでは正しく動作します。 x64 からi86へうまくつながらないようですが。

  • ASP経由でのODBCの接続について

    WindowsServer2008SP1(64bit版)で開発しています。 クライアントからサーバーのASPを動かして、そのASPの中でexeを動かしているのですが、その際に「指定したコネクションは存在しません」というメッセージと共にエラーになってしまいます。 サーバーから直接VBSで動かしたときには、上手くいくのですが、ASPからだと上手くいかないという現象です。 SQLServerへの接続にはODBCを使っており、システムDNSにも作成してあるのですが、ほかに何か設定が必要なのでしょうか?

  • ODBCからMySQLに接続できません

    お世話になります。 Access2003のテーブルをODBCからMySQLに作ろうと思っています。 ODBCをインストールして各項目を入力して、”Test Data Source”をクリックしたところ、下記のエラーが出ました。 MySQL ODBC 3.51 Driver Access denied user:'abc@54-65-15-54eonet.ne.jp!(Using password:YES) abcはユーザ名かデータベース名(ユーザ名とデータベース名は同じです。) (同じエラーの記事がありました。) http://vine-linux.ddo.jp/bbs/read.php?FID=11&TID=162 アクセス権については、接続先はレンタルサーバーですので、誰でもアクセスできるように設定してもらいました。 しかし、同じエラーが出ました。 何度もチェックしてもらいましたが、サーバー側に問題はないようです。 ODBCの設定は下記のとおりにしました。 PHP4: 4.3.11 MySQL: 4.0.20 http://tsuttayo.sytes.net/mysql/install/odbc/10/10/20/10/install.php 解決策をご教授いただければ幸いです。よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Win10 64bitなのに32bit Offic

    PC:Panasonic CF-SZ5 OS:Windows10 Pro 64bit Office:Office 365 私のPCのOSは64bit版なので、購入以来ずっとOffice 365も当然64bit版がインストールされているものと思ってきましたが、Wordのアカウントを見たら「Microsoft Word for Office 365 MSO 32bit」となっていました。 何故64bitではないのでしょうか? どなたか教えてください。

  • Win 7 (64bit)に 32bit オフィス

    知人が 64bit版のウィンドーズ7に 32bit版のオフィスをインストールしました。 特に問題なく動いているようなのですが、このまま使い続けるとどのようなトラブルの発生が考えられるでしょうか。 64bit版にインストールし直すようにした方がいいんでしょうか。

  • AccessからODBC経由でのSQLServerへの接続

    Access(2002)からSQLServer2000(8.0 Developer Edition)へODBC経由で接続にいってテーブルを参照したのですが読み取り専用でデータの変更、レコードの追加・削除等ができません。 データの変更等ができるようにしたいのですが、どうすればよいのでしょうか? 接続するときのユーザーは接続先のデータベースに対してオーナー権限を持っています。また、DSNはシステムDSN、ファイルDSNでそれぞれ作り接続を試してみましたが両方とも読み取り専用で開いてしまいました。 ちなみにPHPでODBC接続してINSERTするプログラムを作り動かしたところ問題なく動きました。 宜しくお願い致します。

  • MS ACCESS試用版のインストールについて

    MS OFFICE2010がプレインストールされたPCにMS ACCESS2013試用版をインストール(カスタムインストール)したところEXCEL2010やWORD2010が消えてしまいました。システムバックアップを行っていなかったためOFFICE2010を再度インストールしなければならないと思いますが、そうするとACCESS2013の試用版が使えないのではないかと思っています。同じことを経験された方がおられれば教えてください。

  • Microsoft ODBC for Oracleをインストールしたい(64ビットOS)

    Windows2003で64ビットを使用しています。 AccessにODBC接続しようとしています。 Microsoft ODBC for Oracle をインストールしたいのですが、Access等をインストールしてもこのドライバが入ってきません。(Accessに同梱されていると聞きました) また、MDAC(2.8?)をインストールしてみてもだめでした。 64ビットだからMicrosoft ODBC for Oracleがうまくインストールできないのでしょうか? ちなみにオラクルのODBCドライバは正常にインストールできており、データソース接続テストも成功しています。 どなたかご存知の方、ご教授ください。 よろしくお願いします。