MySQL 警告时触发

MySQL trigger on warning

我正在使用 LOAD DATA LOCAL INFILE 将文件上传到 MySQL table。 由于此文件是由用户创建的,因此它可能包含大量不一致的数据和错误的格式。 目前我正在使用以下代码捕获这些警告:

if (mysqli_warning_count($conn)) { 
  $e = mysqli_get_warnings($conn); 
  do { 
    $conn->query("CALL import_warning($id, '$e->errno', '$e->message');"; 
  } while ($e->next()); 
}

有没有办法在 MySQL 中执行此操作,就像触发警告一样?

是,也不是。

mysqli_get_warnings() 函数产生与 show warnings MySQL 语句相同的输出。因此,有一种方法可以从纯 sql 代码中获取警告列表。但是,show 语句在 MySQL 中的处理方式与简单的 select.

不同

不幸的是,这意味着您无法在存储过程中正确处理任何 show 语句的结果集,因此您无法在导入后正确记录警告。