禁用 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_WARNING
或PDO::ERRMODE_EXCEPTION
使其显示某些内容。某处代码要么显示错误,要么告诉 PHP 生成错误。
是的,我发现我正在使用 getMessage() 方法在 try catch 中打印错误。谢谢!以上是关于禁用 MySql 错误的主要内容,如果未能解决你的问题,请参考以下文章
InnoDB:在 /var/lib/mysql/ 中更改权限或禁用 selinux 后,文件操作中的操作系统错误编号 13 未修复
如何在 MySql Workbench 中禁用 INVISIBLE 索引选项?