因此,我正在为我的web应用程序设置一个安装程序,并有数据库凭据的输入字段。验证过程的一部分包括测试数据库连接(使用PHP的PDO库)。如果连接失败,我希望能够区分错误的密码、错误的地址、不存在的数据库名称等,以便在表单上引用正确的输入字段。
有一点可以指向一个引用,它概述了PDOException可能返回的错误代码/消息吗?
编辑:--在我看来,这些错误代码/消息可能是特定于数据库的,而本地数据库代码/错误可能只是被传递过来。如果是这样的话,我目前只使用MySQL 5数据库。
发布于 2009-04-13 17:46:14
MySQL文档是错误码的完整参考。
从1000开始的错误代码是服务器错误。这些错误包括:
ER_ACCESS_DENIED_ERROR)消息:用户‘'%s'@'%s’的访问被拒绝(使用密码:%s)ER_BAD_DB_ERROR)消息:未知数据库'%s‘从2000年开始的错误代码是客户端错误。这些错误包括:
CR_UNKNOWN_HOST)消息:未知的MySQL服务器主机'%s‘(%d)CR_CONN_HOST_ERROR)消息:无法连接到'%s‘上的MySQL服务器(%d)我不会列出所有可能的错误,因为它们已经被记录下来了,而且我不知道您需要处理哪些错误。例如,错误2001和2002特定于UNIX套接字连接,这可能与目标平台无关。
不要忘记使用PDO::errorCode()和PDO::errorInfo(),而不是简单地使用PDOException消息。
你对getCode()的评论-不,它似乎没有得到这种支持。我做了一个快速测试,var_dump()一个PDOException。不幸的是,即使错误代码和SQLSTATE包含在异常消息中,它的代码也是简单的"0“。
例外:getCode()是Exception基类的一部分,与PHP5.1.0版本一样。这取决于各自的PDO驱动程序实现来使用这个对象字段。至少对于MySQL司机来说,他们显然没有。
发布于 2009-04-13 17:42:43
我不确定PDO,但是您可以使用mysql_error()函数,它返回如下内容:
然后,您可以直接向用户显示这些错误,或者四处播放以获得所有可能的错误的列表,并直接确定错误的原因。
https://stackoverflow.com/questions/744656
复制相似问题