错误。无法连接到数据库:SQLSTATE[HYT00]
Error. Cannot connect to database: SQLSTATE[HYT00]
尝试使用默认端口号连接到我的 Microsoft SQL 服务器数据库时出现以下错误:
Error. Cannot connect to database: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired
这是我用来连接数据库的 PHP 代码:
<?php
class DB_Connect {
private $db;
function construct() {
}
public function connect() {
require_once 'String.php';
try {
$this->db = new PDO('sqlsrv:Server=$server,1433; Database=$db', $user, $pass);
} catch (PDOException $e) {
return "Error. Cannot connect to database: " . $e->getMessage();
}
}
}
?>
我 100% 确定凭据是正确的,因为当我 运行 使用 xampp.
本地主机上的脚本时它们是有效的
到目前为止我做了什么:
- 在 linux 机器上安装了 pdo 驱动程序
- 在 linux 机器上安装了 obdc 驱动程序
- 在 linux 机器上安装了 sqlsrv 驱动程序
这是我在服务器上使用的配置:
PHP 版本 7.0.30 连接到托管在 Gearhost 上的 SQL Server 2017。
任何人都可以阐明可能出了什么问题吗?
你能在这里用这个吗?
try{
$db = new PDO("sqlsrv:Server,1433=$server;dbname=$db;charset=utf8","$user","$pass");
$query=$db->prepare("Some SQL String Here");
$query->execute();
}catch(PDOException $e ){
echo "Error: ".$e;
}
基本上问题是 2:
- 首先,驱动没有正确安装。我需要通过 PECL 安装驱动程序。这就是我在 Redhat Cent OS 7:
上安装它们的方式
安装PHP:
sudo su
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum-config-manager --enable remi-php72
yum update
yum install php php-pdo php-xml php-pear php-devel re2c gcc-c++ gcc
安装先决条件
sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum install devtoolset-7
scl enable devtoolset-7 bash
为 SQL 服务器安装 PHP 驱动程序
pecl download sqlsrv
tar xvzf sqlsrv-5.2.0.tgz
cd sqlsrv-5.2.0/
phpize
./configure --with-php-config=/usr/bin/php-config
make
sudo make install
安装Apache并重启服务
sudo yum install httpd
sudo apachectl restart
--编辑--
您也可以从 Github 项目页面下载预构建的二进制文件,或从 Remi 存储库安装:
sudo yum install php-sqlsrv php-pdo_sqlsrv
- 在我的例子中,我还必须打开来自服务器数据库的防火墙连接。您检查是否有必要,从终端 运行 sqlcmd 连接到数据库。如果您使用正确的凭据遇到网络错误,那么您就知道您遇到了防火墙问题。
希望这对正在努力将 Linux 服务器连接到 SQL 服务器的任何人有所帮助。
尝试使用默认端口号连接到我的 Microsoft SQL 服务器数据库时出现以下错误:
Error. Cannot connect to database: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired
这是我用来连接数据库的 PHP 代码:
<?php
class DB_Connect {
private $db;
function construct() {
}
public function connect() {
require_once 'String.php';
try {
$this->db = new PDO('sqlsrv:Server=$server,1433; Database=$db', $user, $pass);
} catch (PDOException $e) {
return "Error. Cannot connect to database: " . $e->getMessage();
}
}
}
?>
我 100% 确定凭据是正确的,因为当我 运行 使用 xampp.
本地主机上的脚本时它们是有效的到目前为止我做了什么:
- 在 linux 机器上安装了 pdo 驱动程序
- 在 linux 机器上安装了 obdc 驱动程序
- 在 linux 机器上安装了 sqlsrv 驱动程序
这是我在服务器上使用的配置:
PHP 版本 7.0.30 连接到托管在 Gearhost 上的 SQL Server 2017。
任何人都可以阐明可能出了什么问题吗?
你能在这里用这个吗?
try{
$db = new PDO("sqlsrv:Server,1433=$server;dbname=$db;charset=utf8","$user","$pass");
$query=$db->prepare("Some SQL String Here");
$query->execute();
}catch(PDOException $e ){
echo "Error: ".$e;
}
基本上问题是 2:
- 首先,驱动没有正确安装。我需要通过 PECL 安装驱动程序。这就是我在 Redhat Cent OS 7: 上安装它们的方式
安装PHP:
sudo su
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum-config-manager --enable remi-php72
yum update
yum install php php-pdo php-xml php-pear php-devel re2c gcc-c++ gcc
安装先决条件
sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum install devtoolset-7
scl enable devtoolset-7 bash
为 SQL 服务器安装 PHP 驱动程序
pecl download sqlsrv
tar xvzf sqlsrv-5.2.0.tgz
cd sqlsrv-5.2.0/
phpize
./configure --with-php-config=/usr/bin/php-config
make
sudo make install
安装Apache并重启服务
sudo yum install httpd
sudo apachectl restart
--编辑--
您也可以从 Github 项目页面下载预构建的二进制文件,或从 Remi 存储库安装:
sudo yum install php-sqlsrv php-pdo_sqlsrv
- 在我的例子中,我还必须打开来自服务器数据库的防火墙连接。您检查是否有必要,从终端 运行 sqlcmd 连接到数据库。如果您使用正确的凭据遇到网络错误,那么您就知道您遇到了防火墙问题。
希望这对正在努力将 Linux 服务器连接到 SQL 服务器的任何人有所帮助。