将ubuntu上的Laravel连接到Azure SQL Server


Connect Laravel on ubuntu to Azure SQL Server

我正在使用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

检查这些:

  1. 端口分隔符在windows上为",",在linux/Mac上为":"。由于您有1433,默认的1433,所以最好不要使用它
  2. 使用以下其中一项从命令行首先进行测试:$tsql-S sectionNameInFreetdscoff-U用户-P通行证$tsql-H主机名-p端口-U用户-p通行证
  3. 在磁盘上找到freetds.conf。它可能存在于多个地方,tsql使用一个,而PHP使用另一个。最好的方法是将它们符号链接到一个通用文件中,并在上面进行测试。请注意,该文件的常见位置是/etc/或/usr/local/etc/旁边的~/.freetds.conf

  4. freetds.conf文件中应该有一个[global]部分。放在那里这些行:

    tds版本=8.0

    文本大小=20971520

    客户端字符集=UTF-8