- PR -

PHPからODBC経由でMS-Accessに接続できない

1
投稿者投稿内容
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-03-05 20:04
参りました。

http://www.unixodbc.org/
こちらのサイトから先ずunixODBCを取ってきてインストールしました。
http://oplweb2.openlinksw.com:8080/download/
こちらのサイトから、iODBCのMulti-Tier Formatを取ってきてインストールしました。
http://www.easysoft.com/products/oob/main.phtml
こちらから、odbc-odbc bridge のクライアント/サーバーパッケージ両方取ってきて
インストールしました。
更に、http://www.amy.hi-ho.ne.jp/jbaba/brodbc/brodbc3.htm
ここから brodbc03.tgz をダウンロードしてインストール、

/etc/odbcinst.ini の中身は
[OOB]
Description = Easysoft ODBC-ODBC Bridge
Driver = /usr/local/easysoft/oob/client/libesoobclient.so
Setup = /usr/local/easysoft/oob/client/libesoobsetup.so
FileUsage = 2

勿論、/etc/ld.so.conf に
/usr/local/easysoft/lib
/usr/local/easysoft/oob/client
/usr/local/easysoft/unixODBC
を含めて ldconfig してます。

/etc/odbc.ini の中身は

[Default]
Driver = OOB

[access]
Driver = OOB
SERVER = 192.168.*.* <- 実際はAccessが動いてるWindowsマシンのIP
PORT = 22003
TRANSPORT = tcpip
TARGETDSN = test2
LOGONUSER = Administrator
LOGONAUTH = *************
TargetUser = Administrator
TargetAuth = *************

[brodbc]
Driver = /usr/local/lib/brodbc.so
Server = 192.168.*.* <- 実際はODBCマネジャーが入ってる WindowsマシンのIP
Port = 22002
Database = TEST
Username = Administrator
Servercharset = Shift_jis
Charset = eucjp
Debug = 0

クライアント(Linux)側の設定は以上で、Access側のサーバープロセスとして、
brodbc03で用意されてる odbrd.exe をサービスとして起動。ポートは 22002
更に、ウィンドウズのコントロールパネルの管理メニューのODBCデータソース管理
でデータソース test2 を Q:\\\\TEST\\\\test2.mdb にリンク、
データソース TEST を Q:\\\\TEST\\\\TEST.mdb にリンク済み。

そして、odbc-odbc bridge サーバーの新しいデータソースとして、 それらを Target DSN
として それぞれ "access", "brodbc" という名前で、ポート 22003, User: Administrator
で追加しました。ここで ODBC の接続テストをした際に、ライセンスがどうたらこうたらゴチャ
ゴチャ言われるのも気になりますが、それ以前に、下のPHPを実行してもウンともスンとも言わ
ないばかりか、

コード:
<html>
<body>
<?php
    $db = odbc_connect("brodbc", "", "");
    $sql = "select * from test_t";

    print "$sql<br>\\\\n";

    $rs = odbc_exec($db, $sql );
    $cols = odbc_num_fields($rs);

    print "<table border=1>\\\\n";

    while ( odbc_fetch_row($rs) ){
        print("<tr>");
        for($i = 1; $i <= $cols; $i++){
            print('<td>' . odbc_result($rs, $i) . '</td>');
        }

        print("</tr>\\\\n");
    }

    print "</table>\\\\n" ;
?>
</body>
</html>



Warning: SQL error: [unixODBC][Driver Manager]Data source name not found, and
no default driver specified, SQL state IM002 in SQLConnect in
/var/www/html/cobra/php/brod.php on line 4 select * from TB01

こんなメッセージが出てきてしまいます。
一応、tcpdump で このPHPが置いてある Web Server の 80番ポートにリクエスト後、どういう
パケットが飛んでるか見ましたが、なんとキャプチャーされたTCPのパケットが 0 バイト(笑)。

お手上げ状態です。
ヘルプ!
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-03-12 13:06
なんか、データソース名を一度全部削除して、作り直したら全く正常に動くようになりました。
訳判らん。
1

スキルアップ/キャリアアップ(JOB@IT)