1

ADODB (v5.20.14) を使用して PHP (v7.3) 経由で FoxPro データベースでクエリを実行するための API に取り組んでいます。現在、私の実用的なソリューションは、Windows 2019 サーバーで実行されている XAMPP (3.2.2 x86) を使用しています。FoxPro ドライバー (6.01.8629.01)。

私は現在、IIS 10 を使用してこの同じセットアップを機能させようとしていますが、Web サーバーに同時に要求を送信すると、最後の要求のみがデータを正常に返すという奇妙な問題に遭遇しています。問題は にあります$db->connect。これは私が使用している接続コードです:

require_once('adodb/adodb.inc.php');

$db = NewADOConnection("vfp");

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

$db->debug = true;
$db->connect("DSN=Visual FoxPro Database;UID=;SourceDB=<UNC PATH>.DBC;SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;") or die("Failed to connect.");

最後のリクエスト以外のすべてで返されるエラーは次のとおりです。

odbc_connect(): SQL error: [Microsoft][ODBC Visual FoxPro Driver]This file is incompatible with the current version of Visual FoxPro.  Run 30UPDATE.PRG to update the file to the current version., SQL state S1000 in SQLConnect

エラーに関するこのKB 記事を見つけましたが、これは誤ったエラーであることを示唆しているようです。それは誤解を招く。

複数の Visual FoxPro 6.0 実行可能ファイルからサーバー上にあるデータベースを何度も開くと、次のエラーがランダムに表示されます。

このファイルは、現在のバージョンの Visual FoxPro と互換性がありません。30UPDATE.PRG を実行して、ファイルを現在のバージョンに更新します。

このエラーは、ADO または Visual FoxPro ODBC ドライバーを使用して Visual FoxPro 6.0 データベースを開いている場合にも発生することがあります。

IIS ではなく、XAMPP 経由で実行した場合に機能するため、これが非常に役立つとは思いません。IIS アプリケーション プールは、ADODB として x86 を使用するように設定されており、FoxPro ドライバーには 32 ビットが必要です。

この動作の原因と、最後のリクエストが毎回機能する理由がわかりません。dB への接続が確立され、データが正常に返されます。

4

2 に答える 2

0

あなたはADODBと言っていますが、最新バージョンが6.xのODBCドライバーを誤って使用しています。そのドライバーでは、新しいバージョンの VFP テーブルにアクセスできません。代わりに VFPOLEDB ドライバーを使用してください。ADODB (32 ビット) でうまく動作します。残念ながら、私は PHP を使用していないため、PHP の例を示すことはできません。

于 2020-05-21T13:14:41.597 に答える