2010-02-17 70 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應用程序併爲每個人節省很多麻煩。