我试图通过PHP 5.6与Ubuntu 16.04服务器连接到MS SQL Server。我被迫使用这个版本的PHP,以确保与古老的版本兼容。应用
我通过 ondrej的PPA 安装了PHP 5.6及其模块(pdo,pdo_mysql,readline等),没有任何问题,但我无法找到并安装' mssql.so'应用程序所需的模块包我试图开展工作。
这就是为什么我决定使用 ODBC(和PDO_ODBC)驱动程序来连接数据库的原因。
为了做到这一点,我使用 unixodbc 安装了 freetds 并配置了我的文件:
' ODBCINST.INI'档案:
' ODBC.INI'档案:
最后是' freetds.conf'档案:
好吧,我猜我的所有文件配置都很好,但下一部分开始有点奇怪,让我解释一下:当我尝试使用tsql 连接到MS SQL数据库时未在选项中提供密码,但在询问时输入密码,连接工作正常:
但是当我尝试提供与选项相同的密码( - P)时,它不起作用(我用正确的密码尝试了至少10次)!
- > tsql无法为用户打开会话&#; WIPSOS-PHP'
发生同样的问题当我尝试将isql与我的某个连接器一起使用我在“odbc.ini”中配置了档案:
似乎与密码相关,但我无法找到问题,能帮助我吗?
答案 0 :(得分:0)
我找到了部分答案,并且它与密码有效相关:当出现在为tsql命令的-P选项指定的密码中时,特殊字符似乎没有得到很好的解释。
因此,取决于您的shell ,您必须在完成选项的字符串中转义这些字符。在我的情况下,使用bash,我不得不使用' \'逃避特殊性格:
tsql -S hostname -D Database -U User -P pa\$\$word
它现在有效!
但是当我试图用' \'在' odbc.ini'文件,它似乎仍然无法运作:
我的下一个问题是:'如何逃避' .ini'中的特殊字符?文件?' 或'我的配置有问题?'
编辑:我知道这是很久以前的事了,但我在" freetds.conf"中遇到了与主机名相关的配置问题。文件。事实上,我使用的是服务器的本地网络DNS名称,而不是IP地址(可以使用)。我希望我的问题至少可以帮助一些人,处理TSQL和FreeTDS并不容易......