如何从linux连接到SQL Anywhere数据库?

时间:2018-03-07 16:31:18

标签: php linux odbc unixodbc sqlanywhere

我想访问另一台服务器上的SQL Anywhere数据库。 我可以从Windows轻松完成,但我现在需要从Debian这样做。 所有这些都在php。

Windows端: 我从https://archive.sap.com/documents/docs/DOC-35857安装了SQL Anywhere驱动程序,并连接odbc:Driver = {SQL Anywhere 16}; Server = serveur-02; Port = 2638; Database = excalib; Uid = username; Pwd = pwd; 好的,它有效。

Debian方面: 我在Debian 9上使用php 7.0。 UnixODBC已经安装并与其他一些连接一起使用。 FreeTDS也已安装。 所以我在odbcinst.ini中建立了一个链接:

[SQLAnywhere16]
Description     = SQLAnywhere driver
Driver  = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup   = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

在odbc.ini中:

[Excalibur]
Description     = Excalibur
Driver  = SQLAnywhere16
Server  = [ip]
Port    = 2638
Name    = excalib
User    = user
Password        = password

使用命令

isql -v Excalibur

我得到了

[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[08004][unixODBC][FreeTDS][SQL Server]Erreur SQL Anywhere -83 : La base de 
donn▒es sp▒cifi▒e est introuvable
[ISQL]ERROR: Could not SQLConnect

据我所知,它到达服务器,但找不到我的数据库。好的,这是令人鼓舞的。也许是一个错误的错误,但我找不到可以告诉我的文件,也许有人有提示?

下一步是用php做的。

odbc:Driver={SQLAnywhere16};Server=[ip];Port=2638;Database=excalib;Uid=user;Pwd=pwd

而且......它什么也没做。我的服务器什么都没有(ERR_EMPTY_RESPONSE) 在apache的日志中没有任何内容。 如果我故意在驱动程序路径上输入拼写错误,则会发送正确的错误

Fatal error: Uncaught PDOException: SQLSTATE[01000] SQLDriverConnect: 0 [unixODBC][Driver Manager]Can't open lib '/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so1' : file not found in /var/www/html/test.php:24 Stack trace: #0 /var/www/html/test.php(24): PDO->__construct('odbc:Driver={SQ...') #1 {main} thrown in /var/www/html/test.php on line 24

而且......我输了。有人可以帮帮我吗?或者可能有另一个连接到SQLAnywhere数据库的解决方案?

谢谢。

编辑[感谢Nitrex]: 当我尝试通过php连接时,tcpdump没有捕获任何东西,所以我认为这个问题来自Debian方面。

0 个答案:

没有答案