Codeigniter 3.1 - 获取数据库错误号

Posted

技术标签:

【中文标题】Codeigniter 3.1 - 获取数据库错误号【英文标题】:Codeigniter 3.1 - Get database error number 【发布时间】:2017-02-12 04:19:13 【问题描述】:

我有一个 mysql 存储过程,当应该删除用户时调用它。当有人试图删除管理员帐户行时,过程会发出 SQL 状态信号并引发错误。我的程序代码是 -

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Adminstrator cannot be deleted';

我正在使用 CodeIgniter 3.1。我想在我的代码中用它的 sql 状态来捕获这个错误消息。 我查看了以下链接但没有帮助 -

1) CodeIgniter - how to catch DB errors?

2)Database Error Handling problem in CodeIngniter

我观察到有一种方法$this->db->_error_number(); 可用于获取错误号/sql 状态,但在最新版本中已弃用。

我想知道如果发生数据库错误,CodeIgniter 中是否有任何方法可以获取 SQL 状态?

任何帮助将不胜感激。

【问题讨论】:

类似: ***.com/questions/5209332/… | ***.com/questions/7843406/… 我已经访问过这些,在最新版本中无法使用 【参考方案1】:

您提到的功能已被弃用:

_error_message()_error_number() 方法替换为error() - 返回一个包含最后一个数据库错误代码和消息的数组。”

https://www.codeigniter.com/userguide3/changelog.html?highlight=_error_number#version-3-0-0

详情请见https://www.codeigniter.com/userguide3/database/queries.html#handling-errors。

【讨论】:

CI 的 error() 在 SQLSTATE 45000 期间为空。我不明白这种行为。看起来它只显示了我的 MySQL 生成的错误,而不是来自存储过程和触发器的用户定义错误。

以上是关于Codeigniter 3.1 - 获取数据库错误号的主要内容,如果未能解决你的问题,请参考以下文章

获取数据数组时出现 Codeigniter 错误

如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?

获取数据在 CodeIgniter 中不起作用

codeigniter oracle 获取 insert_id()

CodeIgniter 表单验证,无法获取验证错误

如何在 CodeIgniter 中获取活动记录插入的结果