禁用 MySql 错误

Posted

技术标签:

【中文标题】禁用 MySql 错误【英文标题】:disable MySql errors 【发布时间】:2018-07-11 18:52:41 【问题描述】:

有什么方法可以防止 mysql 错误(如果发生)出现在客户端,然后将它们记录在某个地方?

注意 1: 我没有使用任何框架,只是使用 PDO 扩展和 MySql 的原生 PHP。

注意 2: 此代码将停止 PHP 错误,而不是 MySql。

ini_set('display_errors', 0);
ini_set("display_startup_errors", 0);
error_reporting(0);

例子:

禁用错误,如

SQLSTATE[HY000] [1045] Access denied for user ..

【问题讨论】:

使用@,错误不会出现,但你应该防止错误发生 只有echo mysqli_connect_error($link);才会显示,所以不要那样做。 php hide ALL errors的可能重复 【参考方案1】:

对于非 PHP 错误,应用程序(程序员)负责获取和显示/记录错误。因此,对于您的具体示例,不要显示它,记录它:

//instead of displaying
if (!$link) 
    die(mysqli_connect_error());


//log it
if (!$link) 
    error_log(mysqli_connect_error());

您也可以使用我们trigger_error 来尊重您的错误报告设置:

if (!$link) 
    trigger_error(mysqli_connect_error(), E_USER_ERROR);

【讨论】:

所以在 PDO 的情况下有“PDO::ATTR_ERRMODE”,但我注意到给它 PDO::ERRMODE_SILENT 值在发生时仍然显示 sql 错误..有没有办法阻止它? PDO::ERRMODE_SILENT 是默认值且不显示,您需要设置PDO::ERRMODE_WARNINGPDO::ERRMODE_EXCEPTION 使其显示某些内容。某处代码要么显示错误,要么告诉 PHP 生成错误。 是的,我发现我正在使用 getMessage() 方法在 try catch 中打印错误。谢谢!

以上是关于禁用 MySql 错误的主要内容,如果未能解决你的问题,请参考以下文章

InnoDB:在 /var/lib/mysql/ 中更改权限或禁用 selinux 后,文件操作中的操作系统错误编号 13 未修复

MySQL Workbench 自动增量禁用

如何在 MySql Workbench 中禁用 INVISIBLE 索引选项?

MySQL 错误代码:更新期间的 1175(MySQL-Workbench 与控制台)

Xampp中Mysql路径错误

Access 2007 链接表管理器为一个用户禁用 - 和错误 8458