消息'SQLSTATE [](null)(严重性0)的PDOException'

时间:2013-10-22 12:41:12

标签: php sql-server pdo

我正在处理的服务器运行的是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 RCs或早期版本的FreeTDS的错误修复有关。考虑到这个服务器是5.5和更高版本的FreeTDS我想知道是否有人得到这个非常有用的空SQL状态错误消息的答案。

有趣的是,在guide to confirming your FreeTDS installation之后建议的命令无法为我运行。我将尝试重新安装FreeTDS。

1 个答案:

答案 0 :(得分:5)

因此,它似乎是您连接的地方,从而影响端口的形式。

在基于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 / port差异是基于你的连接而不是FROM,情况。

尽管如此,这个系统的错误处理显然还没有多想!