首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能的PDOException错误(MySQL 5)?

可能的PDOException错误(MySQL 5)?
EN

Stack Overflow用户
提问于 2009-04-13 17:19:48
回答 2查看 8.6K关注 0票数 9

因此,我正在为我的web应用程序设置一个安装程序,并有数据库凭据的输入字段。验证过程的一部分包括测试数据库连接(使用PHP的PDO库)。如果连接失败,我希望能够区分错误的密码、错误的地址、不存在的数据库名称等,以便在表单上引用正确的输入字段。

有一点可以指向一个引用,它概述了PDOException可能返回的错误代码/消息吗?

编辑:--在我看来,这些错误代码/消息可能是特定于数据库的,而本地数据库代码/错误可能只是被传递过来。如果是这样的话,我目前只使用MySQL 5数据库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-13 17:46:14

MySQL文档是错误码的完整参考。

从1000开始的错误代码是服务器错误。这些错误包括:

  • 错误: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR)消息:用户‘'%s'@'%s’的访问被拒绝(使用密码:%s)
  • 错误: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR)消息:未知数据库'%s‘

从2000年开始的错误代码是客户端错误。这些错误包括:

  • 错误: 2005 (CR_UNKNOWN_HOST)消息:未知的MySQL服务器主机'%s‘(%d)
  • 错误: 2003 (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司机来说,他们显然没有。

票数 15
EN

Stack Overflow用户

发布于 2009-04-13 17:42:43

我不确定PDO,但是您可以使用mysql_error()函数,它返回如下内容:

  • 拒绝用户youruser@yourserver的访问
  • 无法选择数据库
  • ...etc

然后,您可以直接向用户显示这些错误,或者四处播放以获得所有可能的错误的列表,并直接确定错误的原因。

票数 -9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/744656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档