我在这里遇到了一个非常奇怪的问题。
以下是上下文:
我有一个旧的MS Access 97 .mdb文件,我希望在IIS上运行的HTML,PHP,JQuery内部网页上使用。
现在我知道php的odbc驱动程序已经实现,但由于我已经在其他一些页面中使用了PDO,因此我决定将PDO用于此项目。
因此,在启用扩展和所有PDO odbc驱动程序正常工作后,我复制了.mdb文件并将其命名为DBcopy.mdb到项目文件夹中。
我编写代码并执行一些测试(以确保一切按预期工作),一切似乎都很好。
我将.mdb的路径更改为//myothernetworkdrive/somedirectory/DBreal.mdb,这是" real" .mdb文件突然我收到了这条消息:
SQLSTATE[HY000] SQLDriverConnect: -1032 [Microsoft][Pilote ODBC Microsoft Access] Le moteur de la base de données Microsoft Jet ne peut pas ouvrir le fichier '(Inconnu)'. Il est déjà ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser ses données.
对于那些不会说法语的人来说,这是一个很好的翻译:
SQLSTATE[HY000] SQLDriverConnect: -1032 [Microsoft][ODBC Drivers Microsoft Access] Microsoft Jet can't open file '(Inconnu)'. It is already open in exclusive mode by another user, or you need permission to access these data.
由于错误消息非常自我解释,我检查是否有人通过在同一目录中查找.ldb文件来锁定.mdb文件但无法找到一个因此我认为.mdb不是&# 39;锁定。
任何人都知道为什么我可以访问副本而不是原始副本?我能看到的唯一区别是那里的目录: 复制 - 与项目位于同一文件夹中。 Real-在IIS具有访问权限的网络驱动器上
修改
@Halayem Anis, 我没有使用Apache,我使用IIS但是因为你的观点无论如何我都给了每个人在.mdb文件上更改/写/读/ totalcontrol的权限,但仍然是相同的错误代码。
EDIT2:
我正在使用此连接字符串:
new \PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\\\\myothernetworkdrive\\somedirectory\\DBreal.mdb; UID=Admin; PWD=;");
可能是我的连接字符串不好吗?
EDIT3:
我在IIS中使用名称' testDSN'指向我的.mdb文件,我给了IIS用户对.mdb文件及其所在文件夹的完全控制权。
我还将连接字符串更改为:
new \PDO('odbc:testDSN');
但我仍然收到相同的错误消息。
答案 0 :(得分:0)
错误消息可能以错误的方式驱动您,请执行以下步骤: