Mysql 当使用DBI启用SQL跟踪时,如何防止语句多次输出?
在使用以下命令连接到MySQL数据库之后Mysql 当使用DBI启用SQL跟踪时,如何防止语句多次输出?,mysql,perl,trace,dbi,Mysql,Perl,Trace,Dbi,在使用以下命令连接到MySQL数据库之后 $dbh->trace('SQL|DBD'); 然后,我的SQL查询将打印两次: >count\u params语句从`table1``table1`JOIN`table2``Link`中选择table1.ID ID、table1.LinkID、Link.ID Link\u ID,其中table1.ID=? >parse_params语句选择table1.ID ID,table1.LinkID,Link.ID Link_ID,从'table1``
$dbh->trace('SQL|DBD');
然后,我的SQL查询将打印两次:
>count\u params语句从`table1``table1`JOIN`table2``Link`中选择table1.ID ID、table1.LinkID、Link.ID Link\u ID,其中table1.ID=?
>parse_params语句选择table1.ID ID,table1.LinkID,Link.ID Link_ID,从'table1``table1`JOIN`table2``Link`中选择'table1.ID`,LinkID`,其中table1.ID=?
如何只打印一次每个执行的SQL语句
如何只打印一次每个执行的SQL语句
你不能count_params
和parse_params
是DBD::mysql用来模拟客户端上准备好的语句的内部函数。当您执行准备好的语句时,这两个函数都会被调用
在准备语句并包含以下内容时调用:
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">count_params statement %s\n", statement);
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">parse_params statement %s\n", statement);
在执行语句时调用,并包含以下内容:
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">count_params statement %s\n", statement);
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">parse_params statement %s\n", statement);
两者的逻辑是一样的,所以要么全有,要么什么都没有
如何只打印一次每个执行的SQL语句
你不能count_params
和parse_params
是DBD::mysql用来模拟客户端上准备好的语句的内部函数。当您执行准备好的语句时,这两个函数都会被调用
在准备语句并包含以下内容时调用:
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">count_params statement %s\n", statement);
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">parse_params statement %s\n", statement);
在执行语句时调用,并包含以下内容:
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">count_params statement %s\n", statement);
if (DBIc_DBISTATE(imp_xxh)->debug >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), ">parse_params statement %s\n", statement);
两者的逻辑是相同的,所以要么全有,要么什么都没有。当我说“你不能”时,我的意思是没有内置的方法来使用DBD::mysql实现这一点。如果它真的困扰您,您可以过滤stderr,例如,perl myscript.pl 2>&1 | grep-v'>count_params'
当我说“您不能”时,我的意思是没有内置的方法来使用DBD::mysql实现这一点。如果它真的困扰您,您可以过滤stderr,例如perl myscript.pl 2>&1|grep-v'>count_params'