在 Windows 上使用 PHP 连接到 Advantage 数据库

Posted

技术标签:

【中文标题】在 Windows 上使用 PHP 连接到 Advantage 数据库【英文标题】:Connecting to an Advantage Database with PHP on Windows 【发布时间】:2012-03-29 01:30:32 【问题描述】:

我有一个客户有一个使用 Advantage 数据库的应用程序。 我在尝试使用 ODBC 或 php 连接器通过 PHP 连接它时遇到问题 它得到这个发现 6420 错误,这似乎很常见。

我认为大部分问题是我对 Advantage Database 缺乏了解。 我在想问题可能是实际上没有服务器在运行? 那个应用程序可能有自己的服务器吗? 我编写了一个小的 C# 程序,它连接到数据字典并可以很好地读取它,但它使用这个 Advantage.data.provider 来表示 C#。这就像一个服务器吗?

所以我想底线是: 有没有办法连接到这个数据字典/优势数据库,以便我可以使用 PHP 访问? (最好不买东西)

感谢您的帮助。

【问题讨论】:

【参考方案1】:

注意:我与 Advantage 或 Sybase(拥有 Advantage 的母公司)没有任何关系;我以前经常与 Advantage 合作并有一些经验,但与公司或产品无关。

Advantage Database Server (ADS) 以三种不同的模式运行。默认情况下,它在服务器模式(ADS_REMOTE_SERVER)下运行,这需要运行 Advantage 数据库服务器实例,可以通过检查特定端口(端口可配置)找到该实例。

第二种默认模式是 ADS_AIS_SERVER,即 Advantage Internet Server。这允许远程连接通过互联网连接直接连接到 AIS 实例;我从未使用过此版本的 ADS,因此无法评论该模式。

最后一种模式是本地服务器(未配置为默认连接类型),在这种情况下会加载 Advantage DLL 的本地副本,并使用该本地连接运行以访问数据。在这种模式下,某些功能不可用(例如事务),并且连接数受到限制。 Advantage Local Server 可免费在本地使用,最多支持 5 个连接(无论如何,我上次检查过)。

ADS 有多种连接方式(ODBC、.NET 数据提供程序、C、C#、Clipper、FoxPro 等库),并且在服务器和客户端级别都支持 Windows 和 Linux。

模式通常由 API 调用配置;我更熟悉通过它的 Delphi 组件实现来使用 ADS;通过 API,ADSSetServerType 决定使用哪种模式(或模式组合)。

对于 ODBC,您可以通过 ODBC 配置屏幕(使用 Windows 控制面板中的普通 ODBC 管理实用程序时可见)配置模式 - 请参阅下图中的可用服务器类型组框:

根据文档,您认为这是一个发现错误是正确的。您是否检查过建议的解决方案?

问题:Advantage 应用程序无法连接到 Advantage 数据库服务器。

解决方案:有几个问题可能会导致此错误发生。下面列出了一些常见的解决方案。请参阅 Advantage 知识库以获取更详细的说明和更完整的已知错误案例列表。

验证 Advantage 数据库服务器是否已安装并在数据库所在的服务器上运行。

如果尝试使用 Advantage 本地服务器而不是 Advantage 数据库服务器,请确保将应用程序的“服务器类型”设置设置为使用 Advantage 本地服务器。

如果在 Advantage Data Architect 中使用本机 SQL 实用程序,并且您希望使用 Advantage 本地服务器而不是 Advantage 数据库服务器,请确保将 Advantage 连接类型设置为“本地 (ALS)”。这可以通过“查询选项”对话框来完成,该对话框通过单击上面有螺丝刀、锤子和扳手的按钮来访问。

如果服务器是 NetWare 5 或更高版本,请确保 Advantage 数据库服务器的版本是 5.6 或更高版本,并确保 Advantage 客户端是 v2.6 或更高版本。

如果与仅安装了 IPX 的服务器通信,请确保启用 Advantage 客户端以发送 IPX 数据包。

如果通过防火墙运行,请确保正确配置 Advantage IP 发送和接收端口并通过防火墙打开。

(我打算在 Sybase 网站上提供指向文档的链接,但它现在似乎处于脱机状态以进行维护;我将在明天备份此答案时更新此答案,或者我可以访问已添加书签的链接从我的办公室电脑上。)

【讨论】:

肯,非常感谢您的回复。如果我有点密集,我很抱歉。我只是按照上面的示例进行操作,但仍然遇到相同的错误,提到的第一项是 验证 Advantage 数据库服务器是否已安装并在数据库所在的服务器上运行。 这就是我现在所在的位置使困惑。我只有数据目录。我需要安装某种 Advantage 本地服务器吗? @randy,如果您没有安装 ADS,只需取消选中“远程服务器”和“Internet 服务器”,并检查 ODBC 配置中的“本地服务器”即可。

以上是关于在 Windows 上使用 PHP 连接到 Advantage 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux 上从 PHP 连接到 MS Access 数据库

在 Windows 10 上使用 XAMPP 连接到 MySQL 数据库的访问被拒绝

在 Windows 上将 PHP 连接到 SQL Server

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

在 Windows 10 上通过 ODBC 连接到 Access 数据库时出现 IIS 500 错误

使用 php 连接到 windows live messenger xmpp