我一直在开发一个 API,以便使用 ADODB (v5.20.14) 通过 PHP (v7.3) 在 FoxPro 数据库上运行查询。目前,我的工作解决方案使用在 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
我发现这篇关于错误的知识库文章似乎表明这是一个错误的错误;这是误导。
如果您从多个 Visual FoxPro 6.0 可执行文件多次打开位于服务器上的数据库,则会随机出现以下错误:
此文件与当前版本的 Visual FoxPro 不兼容。运行 30UPDATE.PRG 将文件更新到当前版本。
如果您使用 ADO 或 Visual FoxPro ODBC 驱动程序打开 Visual FoxPro 6.0 数据库,也可能出现此错误。
我不认为这很有帮助,因为它在通过 XAMPP 执行时有效,而不是 IIS。IIS 应用程序池设置为使用 x86 作为 ADODB,并且 FoxPro 驱动程序需要 32 位。
我不确定是什么导致了这种行为以及为什么最后一个请求每次都有效,与 dB 的连接已建立并且数据已成功返回。