FreeTDS 工作但 odbc 无法连接到 mssql 服务器
FreeTDS works but odbc can't connect to mssql server
我有一个 VPS,在 Ubuntu 16 上安装了 Apache2。现在我正在尝试使用 UnixODBC 驱动程序连接到我的业务数据库。我已经为此苦苦挣扎了两天,我似乎无法弄清楚为什么它无法连接到我的数据库。
我已经安装了带有 FreeTDS 的 UnixODBC。我的 php 版本是 7.0。在我的 index.php 中,我试图在 __construct class:
中像这样连接到我的数据库
$this->DBConn = new PDO("odbc:Driver=FreeTDS;host=SPOOF;dbname=SPOOF", 'SPOOF', 'SPOOF');
但是无论我做什么,这样做都会返回这个错误:
Fatal error: Uncaught PDOException: SQLSTATE[08001] SQLDriverConnect: 0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source in /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php:5 Stack trace: #0 /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php(5): PDO->__construct('odbc:Driver=Fre...', 'SPOOF', 'SPOOF') #1 /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php(8): CakeClass->__construct() #2 {main} thrown in /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php on line 5
但我不明白为什么它说无法连接到数据源。我的 odbc.ini 配置如下:
[Share]
Driver = FreeTDS
TDS_Version=8.0
ServerName = Share
SERVER = SPOOF
Port = 1433
Database=SPOOF
我的 odbcinst.ini 包含这个:
[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
但是就是连接不上,IP也在MSSQL服务器的白名单中。凭据是正确的。它在 Linux VPS、Ubuntu 16.04
上运行
我建议查看本文的第 2 部分:https://www.microsoft.com/en-us/sql-server/developer-get-started/php-ubuntu
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
sudo apt-get install unixodbc-dev gcc g++ build-essential
sudo pecl install sqlsrv pdo_sqlsrv
sudo echo "extension= pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
sudo echo "extension= sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
此时会安装 pdo_sqlsrv 模块:https://github.com/Microsoft/msphpsql
希望对您有所帮助!
我有一个 VPS,在 Ubuntu 16 上安装了 Apache2。现在我正在尝试使用 UnixODBC 驱动程序连接到我的业务数据库。我已经为此苦苦挣扎了两天,我似乎无法弄清楚为什么它无法连接到我的数据库。
我已经安装了带有 FreeTDS 的 UnixODBC。我的 php 版本是 7.0。在我的 index.php 中,我试图在 __construct class:
中像这样连接到我的数据库$this->DBConn = new PDO("odbc:Driver=FreeTDS;host=SPOOF;dbname=SPOOF", 'SPOOF', 'SPOOF');
但是无论我做什么,这样做都会返回这个错误:
Fatal error: Uncaught PDOException: SQLSTATE[08001] SQLDriverConnect: 0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source in /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php:5 Stack trace: #0 /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php(5): PDO->__construct('odbc:Driver=Fre...', 'SPOOF', 'SPOOF') #1 /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php(8): CakeClass->__construct() #2 {main} thrown in /var/www/ttv-boomgaardshoek.nl/public_html/Sharelogistics/index.php on line 5
但我不明白为什么它说无法连接到数据源。我的 odbc.ini 配置如下:
[Share]
Driver = FreeTDS
TDS_Version=8.0
ServerName = Share
SERVER = SPOOF
Port = 1433
Database=SPOOF
我的 odbcinst.ini 包含这个:
[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
但是就是连接不上,IP也在MSSQL服务器的白名单中。凭据是正确的。它在 Linux VPS、Ubuntu 16.04
上运行我建议查看本文的第 2 部分:https://www.microsoft.com/en-us/sql-server/developer-get-started/php-ubuntu
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
sudo apt-get install unixodbc-dev gcc g++ build-essential
sudo pecl install sqlsrv pdo_sqlsrv
sudo echo "extension= pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
sudo echo "extension= sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
此时会安装 pdo_sqlsrv 模块:https://github.com/Microsoft/msphpsql
希望对您有所帮助!