Sql-Server

小號1090小號1090S1090unixODBC在n一世X這D乙CunixODBC驅動器M____一個___呃_Dr一世在和r米一種n一種G和rDriver Manager無效的字元串或緩衝區長度

  • July 6, 2016

發出時出現上述錯誤

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

在我的 Linux CentOS 6.7 上作為 root 使用者。

以下 bcp 命令有效,因此驅動程序應該可以正常工作:

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

此命令也有效:

sqlcmd -Sg<redacted> -Uuser -Ppassword

此外,如果以 root 身份從命令行執行此 PHP 腳本,將返回錯誤:

<?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

我已經安裝了 Microsoft ODBC Driver 11 for SQL Server for Linux ( https://msdn.microsoft.com/library/hh568451(SQL.110).aspx ) 和 unixODBC 2.3.0 沒有問題。

我的主要目標是能夠使用 ODBC 通過 PHP PDO 連接到 MS SQL 實例。

使用花括號時,PDO 連接無法為我找到驅動程序。刪除這些後,我就可以正常連接了。

請注意我對允許變數擴展的連接字元串使用雙引號。

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

引用自:https://serverfault.com/questions/722670