我正在处理将JobName列定义为UNIQUE的MySQL表。如果有人尝试使用数据库中已有的JobName将新Job保存到数据库中,则MySQL会发出警告。
我希望能够在我的PHP脚本中检测到此警告(就像错误一样)并适当地对其进行处理。理想情况下,我想知道MySQL发出了什么样的警告,以便我可以分支代码来处理它。
这可能吗?如果不是,是否是因为MySQL不具备此功能,PHP不具备此功能,还是两者兼而有之?
若要将警告“标记”为PHP本机,将需要更改mysql /
mysqli驱动程序,这显然超出了此问题的范围。相反,您将必须基本上检查在数据库上进行的每个查询中是否存在警告:
$warningCountResult = mysql_query("SELECT @@warning_count");
if ($warningCountResult) {
$warningCount = mysql_fetch_row($warningCountResult );
if ($warningCount[0] > 0) {
//Have warnings
$warningDetailResult = mysql_query("SHOW WARNINGS");
if ($warningDetailResult ) {
while ($warning = mysql_fetch_assoc($warningDetailResult) {
//Process it
}
}
}//Else no warnings
}
显然,进行批量处理将非常昂贵,因此您可能需要仔细考虑警告的产生时间和方式(这可能会导致您重构以消除它们)。
作为参考,MySQL SHOW WARNINGS
当然,您可以省去对的初始查询SELECT @@warning_count
,这样可以为每次执行节省一个查询,但是我将其包括在了书呆子的完整性中。
本文档介绍 DM 中各主要告警信息的处理方法。 高可用告警 DM_worker_offline 存在离线的 DM-worker 超过一小时会触发该告警。在高可用架构下,该告警可能不会直接中断任务,但是会提升任务中断的风险。处理告警可以查看对应 DM-worker 节点的工作状态,检查是否连通,并通过日志排查错误。 DM_DDL_error 处理 shard DDL 时出现错误,此时需要参考 DM
问题内容: 我需要捕捉一些从PHP本机函数抛出的警告,然后处理它们。 特别: DNS查询失败时,它将引发警告。 / 不起作用,因为警告也不例外。 我现在有2个选择: 似乎有点过分,因为我必须使用它来过滤页面中的每个警告(这是真的吗?); 调整错误报告/显示,以使这些警告不会在屏幕上显示,然后检查返回值;如果为,则找不到主机名的记录。 这里的最佳做法是什么? 问题答案: 设置和还原错误处理程序 一种
问题内容: 我收到了预期的通知和警告,并希望在我的PHP文件中将其关闭。错误是: 通知是: 我打算将cron用于此PHP脚本,并且不想在任何地方记录任何错误或通知。 问题答案: 当您确定脚本可以正常运行时,可以摆脱以下警告和注意事项:将以下行放在PHP脚本的开头: 在此之前,我建议您在处理脚本时正确调试脚本,以使所有注意事项或警告都一一消失。 因此,您应该首先使用以下命令将其设置为尽可能详细: 更
问题内容: 我已经搜索过网络,到目前为止,我所看到的是您可以一起使用和含义: 要么 是有效的,但是当我使用此代码时,得到的是: 对于第一个,除了与相同。对于第二个。 问题是什么?我不能使用和在一起?还是正常?是我可以检查连接是否全部有效的方法吗?() 问题答案: 不,你不能使用和在一起。它们是独立的API,它们创建的资源彼此不兼容。 虽然有一个。
问题内容: 我写了这样的PHP代码 但是,当我从中删除“ http://”时,出现以下警告: 警告:file_get_contents(www.google.com)[function.file-get-contents]:无法打开流: 我试过了,但是没有用。 问题答案: 步骤1:检查返回码: 步骤2:通过在调用 _file_get_contents()的_前面放置一个错误控制运算符(即)来抑制警
我得到这个错误- (节点:18420)未处理的PromisejectionWarning:TypeError:无法读取未定义的属性“name” (节点:18420)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请