string或缓冲区长度无效

发出时我收到上面的错误

isql 'odbc:Driver={ODBC Driver 11 for SQL Server};SERVER=<redacted>;DATABASE=<redacted>;' username password -v 

作为我的Linux CentOS 6.7的根。

下面的bcp命令起作用,所以驱动程序应该正常工作:

 bcp master.INFORMATION_SCHEMA.TABLES out OutFile.dat -S <redacted> -U user -P password 

另外这个命令的作品:

 sqlcmd -Sg<redacted> -Uuser -Ppassword 

而且这个PHP脚本,如果以root身份从命令行运行,将会返回一个错误:

 <?php $connStr = 'odbc:Driver={ODBC Driver 11 for SQL Server};SERVER=<redacted>;DATABASE=<redacted>;'; $dbUser = '<redacted>'; $dbPass = '<redacted>'; $db = new PDO($connStr, $dbUser, $dbPass); ?> [root@ru000397 ~]# php prova.php PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /root/prova.php:6 Stack trace: #0 /root/prova.php(6): PDO->__construct('odbc:Driver={OD...', '<redacted>', '<redacted>') #1 /root/prova.php(10): db_connect() #2 {main} thrown in /root/prova.php on line 6 

我已经为SQL Server for Linux( https://msdn.microsoft.com/library/hh568451 ( SQL.110 ).aspx)和unixODBC 2.3.0安装了Microsoft ODBC Driver 11,没有问题。

我的主要目标是能够通过使用ODBC的PHP PDO连接到MS SQL实例。

使用花括号时,PDO连接找不到驱动程序。 删除后,我能够连接得很好。

请注意我的连接string允许可变扩展的双引号的用法。

 $mssqldriver = 'ODBC Driver 11 for SQL Server'; $connStr = "odbc:Driver=$mssqldriver;SERVER=<redacted>;DATABASE=<redacted>;";