in reply to How to subclass DBI and still have the errors reported in user code

You could try to use the @CARP_NOT variable (see the Carp documentation) like
@CARP_NOT = qw(DBI);
That will take out the DBI level and all modules that DBI trusts. Most likely you will have to add other modules in the list too since few people bother to set up Carp trust relationships. In your case you'll likely have to add some DBD::mysql specific module names like DBD::mysql::db (but maybe that DBD::mysql will work too)