带有消息“SQLSTATE[] (null) (严重性 0)”的 PDOException


PDOException with message 'SQLSTATE[] (null) (severity 0)'

我正在使用的服务器运行php 5.5,并且安装了FreeTDS dblib。

php -v回报;

PHP 5.5.0-dev (cli) (built: Oct 23 2012 15:41:58) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

构建就是这样;

Configure Command => './configure' '--with-apxs2=/usr/bin/apxs2' '--enable-track-vars' '--with-mssql' '--with-png-dir=/usr' '--with-jpeg-dir=/usr' '--with-zlib-dir=/usr' '--enable-ftp' '--with-gd' '--enable-freetype-4bit-antialias-hack' '--with-config-file-path=/etc' '--enable-calendar' '--with-curl' '--with-curlwrappers' '--enable-exif' '--with-mysql' '--with-ldap' '--with-freetype-dir=/usr' '--enable-sockets' '--with-pdo-mysql' '--enable-soap' '--with-mcrypt' '--with-pdo-dblib' '--with-openssl' '--enable-sysvsem' '--enable-shmop' '--enable-pcntl' '--with-xsl'

我只是尝试使用以下方法连接到 SQL Server 框;

<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>

输出如下;

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[] (null) (severity 0)' in /path/to/file.php:17 Stack trace: #0 /path/to/file.php(17): PDO->__construct('dblib:host=fqdn...', 'usr', 'passwd') #1 {main} thrown in /path/to/file.php on line 1

在我对此进行了大量搜索的现有堆栈帖子之后,它们都与 PHP 的错误修复有关,因为 5.2 RC 或早期版本的 FreeTDS 。考虑到这个服务器是 5.5 并且使用更高版本的 FreeTDS,我想知道是否有人对这个非常有用的空 SQL 状态错误消息有答案。

有趣的是,按照指南确认您的 FreeTDS 安装建议无法为我运行的命令。我将尝试重新安装 FreeTDS。

因此,似乎您连接的位置会影响端口形式。

在基于 Windows 的服务器上使用 PHP 时,连接字符串应该是;

<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>

在基于 Linux 的服务器上使用 PHP 时,连接字符串应该是;

<?php $pdo = new PDO ('dblib:host=fqdn:port;dbname=db', 'usr', 'passwd'); ?>

我假设 fqdn/端口差异是基于您的连接 TO 而不是 FROM,情况。

尽管如此,这个模块这个系统的错误处理显然没有被考虑太多!

相关文章: