我有一台托管在Windows Server 2003计算机上的管理软件,该软件使用MS Access(* .mdb)数据库。
在另一台使用CentOS 6.7的机器上,我安装了相对于php odbc,freetds等所有必需的模块。
现在我需要使用以下PHP代码连接到我的远程数据库:
$db = new PDO("odbc:Driver=FreeTDS;Server=ip_of_windows_server;DBQ=mdb_file_name.mdb;Uid=;Pwd=my_mdb_password;");
$query = 'SELECT * FROM table_name';
$statement = $db->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_NUM);
我得到的错误是:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08001] SQLDriverConnect: 0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source' in /home/my_user/public_html/odbc/index.php:21 Stack trace: #0 /home/my_user/public_html/odbc/index.php(21): PDO->__construct('odbc:DRIVER=Fre...') #1 {main} thrown in /home/my_user/public_html/odbc/index.php on line 21
你可以看到我没有为我的数据库使用任何用户名,但是如果我在用户名中输入'root'就是一样。
Driver = FreeTDS
取自etc/odbcinst.ini
此内容:
[FreeTDS]
Description = ODBC PDO
Driver = /usr/local/freetds/lib/libtdsodbc.so
Driver64 = /usr/lib64/libtdsodbc.so.0
UsageCount = 1
Threding = 2
并在etc/odbc.ini
我有这样的内容:
[mydb]
Description = "Microsoft Access Try DB"
Driver = FreeTDS
Database = /my_mdb_name.mdb
Servername = ip_of_windows_server
Port = 80
Trace = No
TDS_Version = 8.0
我确定我错了什么,但我不知道:P
提前致谢。