可以检查或设置以下标志来改变错误处理期间的行为:
螺纹- > net.report_error
螺纹- > net.report_error
被设置在my_message_sql ()
如果注册了错误消息。(my_message_sql ()
被称为,my_error ()
,my_printf_error ()
,my_message ()
)。
螺纹- > query_error
就像net.report_error
,但总是设置为1 inmy_message_sql ()
如果错误处理程序未捕获错误。由复制使用,以查看查询是否生成任何类型的错误。
螺纹- > no_warnings_for_error
通常错误也会产生警告。该警告可以通过设置来禁用螺纹- > no_warnings_for_error
。(这允许捕获语句生成的所有错误消息)
螺纹- > lex - > current_select - > no_error
这被设置为以防万一插入忽略……选择
。在本例中,我们忽略了select生成的所有非致命错误。
螺纹- > is_fatal_error
如果因为出现致命错误而中止当前语句(以及任何多行语句),则设置此值。(例如,存储过程的继续处理程序不应该能够捕捉到这一点)。这是通过mysql_reset_thd_for_next_command ()
。
螺纹- > abort_on_warning
严格模式标志,这意味着如果收到警告,我们应该中止语句。在域:存储
函数将警告级别更改为警告
来错误
。在其他情况下,这个标志主要是用螺纹- > really_abort_on_warning ()
确保我们不会在更新非事务性表的过程中中止。
螺纹- > count_cuted_fields
如果设置了,我们将为字段对话生成警告(正常情况为插入
/更新
/删除
)。当在字段之间进行数据内部复制时,这个值主要设置为0,我们不想在任何级别上产生任何转换错误。
(thd - >杀
设置的情况下,在连接协议错误或在情况下'杀死'。在这种情况下,我们应该中止查询并终止连接。
误差函数
螺纹- > really_abort_on_warning ()
如果一个警告应该转换为一个错误,这个函数返回1,就像在严格模式下所有表都是事务性的。转换是在中处理的sql_error.cc: push_warning ()
。
螺纹- > fatal_error ()
如果我们想中止当前语句和任何多行语句,应该调用。
螺纹- > clear_error ()
重置螺纹- > net.report_error
和螺纹- > query_error
。