我正在使用ubuntu作为操作系统开发一个laravel应用程序,我的数据库位于远程Azure Server中。经过长时间的研究,我快要放弃了。已安装免费tds、php5 sybase等
这是我的连接文件:(默认设置为sqlsrv)
....
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'myhostname:myport',
'database' => 'mydatabasename',
'username' => 'myusername',
'password' => 'mypassword'
),
....
我得到的错误是:
PDOException
SQLSTATE[01002] Adaptive Server connection failed (severity 9)
有什么建议吗?如果你们需要更多的细节,请问:)
提前感谢
我解决了我的问题。我的查询字符串中缺少@domain示例:
$pdo = new PDO("dblib:host=xxxx:1433;dbname=yyyy", 'username@domain', 'password');
尝试从tsql 连接到sql azure时,从服务器读取解决方案失败
编辑/etc/freetds/freetds.conf
文件并使用8.0 TDS版本。
如果没有这个文件安装带有的FreeTDS
sudo apt-get install freetds-bin
检查这些:
- 端口分隔符在windows上为",",在linux/Mac上为":"。由于您有1433,默认的1433,所以最好不要使用它
- 使用以下其中一项从命令行首先进行测试:$tsql-S sectionNameInFreetdscoff-U用户-P通行证$tsql-H主机名-p端口-U用户-p通行证
-
在磁盘上找到freetds.conf。它可能存在于多个地方,tsql使用一个,而PHP使用另一个。最好的方法是将它们符号链接到一个通用文件中,并在上面进行测试。请注意,该文件的常见位置是/etc/或/usr/local/etc/旁边的~/.freetds.conf
-
freetds.conf文件中应该有一个[global]部分。放在那里这些行:
tds版本=8.0
文本大小=20971520
客户端字符集=UTF-8