in reply to interrupting a daemon
The DBI connection handle's destruction will close the connection, so there is no need to arrange for a signal handler to do it. If a statement handle may still be around with unread data, you can avoid a warning by calling finish() on it. I would do that in a DESTROY or END sub rather than in the signal handler.
I gave a blow-by blow account of what makes a daemon daemonic in Re: Creating a perl daemon.