2010-02-17 72 views
1

我在php上运行。
而在我的本地我正在处理Windows环境,所以很容易使用ODBC连接器连接到MS Access数据库。在Linux上与MS Access的数据库连接主机

但是在我的实时服务器环境中有Linux,所以在数据库连接上存在问题。

那么在Linux环境下使用php连接MS Access DB的步骤是什么?

感谢
阿维纳什

+1

没有回答这个问题,但是你真的确定你想在实时服务器环境下使用MS Access吗?当涉及到扩展时,访问非常糟糕,并且用户并不会表现出色(我会尽可能地说)。 – beny23 2010-02-17 10:18:07

+0

我没有像用户和所有的东西。 我的用户不想实现用于在数据库中添加记录的界面。 因此,他们希望他们在访问数据库中输入数据并在网站上获取更新的详细信息。 – Avinash 2010-02-17 10:59:54

+0

您的用户不理解所涉及的问题。假设你已经完整地描述了情况,它不能按照他们想要的方式完成。您应该使用除Jet/ACE之外的其他内容作为数据库。根据环境的不同,他们仍然可以使用Access进行更新,但表格不再存在于Access/Jet/ACE中。 – 2010-02-18 04:59:44

回答

0

如果你是共享主机的Linux服务器将最有可能缺乏ODBC支持。你会更好地使用SQLite,因为这将在Linux和Windows(和OS X)上工作,而没有任何使用PHP的重大问题... ...

+0

使用SQLLite,您的Access用户将其用作其前端应用程序的用途是什么? – 2010-02-18 05:00:33

+0

您可以在设定的时间迁移数据(因为他的在线DB在阅读他的评论时似乎是只读的),或者通过使用SQLite ODBC驱动程序链接您的Access前端应用程序到SQLite(必须安装它们当然每个客户端机器上)。 MySQL也是一样,你应该仍然可以使用前端(也许,你可能需要做一些小的修改 - 例如,如果你使用了特定的DB功能)。 – wimvds 2010-02-18 08:21:57

3

这不是直接回答你的问题,但它是另一种方式解决希望的问题,使用Access来更新网络数据:

您可以端口Access数据库MySQL的现场(网络)服务器上,并使用访问的前端到数据库用户(基本上翻转网站和Access的角色):

您可以使用MySQL Connector驱动程序通过ODBC访问ODBC连接到MySQL数据库,将t通过“外部数据”工具可以访问Access。这样,您就可以获得一个(更多)认真的数据库引擎,并针对网络进行优化,但保留用户使用熟悉的工具操纵数据的能力。

1

Web服务器和客户端网络之间的关系尚不清楚。如果Linux服务器位于客户端的本地局域网上并且正在运行Samba,那么您肯定可以在Linux服务器上存储Access/Jet/ACE数据库,并且用户可以在Access中进行编辑。然后你需要在Linux服务器上运行一个Jet模拟器(据我所知,没有ACE可用于Linux的模拟,所以如果他们的数据库是ACCDB格式,那么你已经不在了运气,除非我刚刚听到有关模拟器的过时)。一些Jet模拟器是只读的,所以要小心。

现在,我不会推荐这种情况,因为Jet/ACE不是为这种应用而设计的。它适用于有SMB网络的小型办公室/工作组环境,但我不会将它用作任何非只读,概念验证或非常低读/写量的网站的后端。我绝对不会建议使用相同的MDB作为网站后端,并由交互式Access用户同时使用。

如果此方案正确,那么如果将后端端口连接到在Linux上运行的服务器数据库,则用户仍可以使用Access。我一直使用MySQL,由于我是一个Access白痴,我依靠phpMyAdmin来管理我的MySQL数据库。对于Access用户来说,理解这些模式应该相当容易。使用MyODBC,您可以在Access中设置链接表,并且报告和表单等将与Jet后端的工作非常相似。

但是我强烈怀疑你的客户端在连接到他们办公室局域网的Linux服务器上托管他们的网站。更有可能的是,Linux服务器是共享网络主机,在这种情况下,将不存在SMB网络,所以您将无法从网站和交互式用户编辑单个Access数据库。这是一件好事,因为这样做首先是不明智的。

有了共享的主机,你可以被允许打开一个端口到服务器数据库(我的网站的托管服务器提供MySQL和PostgreSQL和,但允许远程访问只到MySQL,只有通过主机名/ IP地址。这是可能不能很好地与办公室局域网工作,任何允许开放的无限制访问数据库服务器的网络主机可能并不是你的客户应该使用的一种,一种选择是如果他们提供VPN支持,在这种情况下可以使用VPN,但根据我的经验,网络主机为此(实际上是不合理的)收取手臂和腿,所以通常不是一个好选择。你将能够提供实时连接到运行在网站上的服务器数据库。在这种情况下,您需要以某种方式同步数据库。如果网站是Access数据库的完整奴隶(即,不需要在网站上编辑,添加或删除),那么它可以非常简单,因为您可以编写脚本将数据导出到您上载的文件或文件该网站然后在网站上进行处理以取代现有数据。

如果您有一个多主场景(两个位置都有更新),那就更加复杂了,尤其是如果更新需要双向进行的话。我编写了这种场景的访问端,即将网站上的MySQL数据库与Access数据库同步,这不是一项简单的任务。

如果你可以在两端获得MySQL,它可能会更容易一些(假设你可以设置复制,这在低端虚拟主机场景中似乎不太可能),但我不会指望它。

从我对这种情况了解甚少的情况来看,您的客户必须对整个事情进行重新思考,因为没有很多解决方法,现实中就没有可能的整合。

如果网站不公开,但为了支持远程用户,需要考虑的一件事是Access 2010将为SharePoint Server 2010集成添加一些惊人的支持,这将允许将Access数据库发布到Sharepoint Server并运行它在网页浏览器中。另一方面,如果情况仅限于远程用户,则可以在终端服务器上运行Access应用程序并为每个人节省很多麻烦。