DBに接続して使用すると、なぜ警告が表示されるのか疑問に思っています。ボーナスは、それを示さないクリーンなDBI_TRACE=1
コードを書く方法を示しています。
!! warn: 0 CLEARED by call to connect method
コードは意図したとおりに機能するため、無害に見えることについて話しているのです。DBI トレース モードを設定しないと表示されないことに注意してください。
サンプル Perl コード (SQLite を使用):
use warnings;
use DBI;
DBI->connect("dbi:SQLite:dbname=test.sqlite","","") or die $DBI::errstr;
サンプル出力:
DBI 1.612-ithread default trace level set to 0x0/1 (pid 12814 pi 1ddd010) at DBI.pm line 275 via test.pl line 2
-> DBI->connect(dbi:SQLite:dbname=test.sqlite, , ****)
-> DBI->install_driver(SQLite) for linux perl=5.010001 pid=12814 ruid=1000 euid=1000
install_driver: DBD::SQLite version 1.29 loaded from /usr/lib/perl5/DBD/SQLite.pm
<- install_driver= DBI::dr=HASH(0x204da38)
!! warn: 0 CLEARED by call to connect method
<- connect('dbname=test.sqlite', '', ...)= DBI::db=HASH(0x204e278) at DBI.pm line 662
<- STORE('PrintError', 1)= 1 at DBI.pm line 714
<- STORE('AutoCommit', 1)= 1 at DBI.pm line 714
<- STORE('PrintWarn', 0)= 1 at DBI.pm line 717
<- FETCH('PrintWarn')= '' at DBI.pm line 717
<- STORE('Warn', 0)= 1 at DBI.pm line 717
<- FETCH('Warn')= '' at DBI.pm line 717
<- STORE('Username', '')= 1 at DBI.pm line 717
<> FETCH('Username')= '' ('Username' from cache) at DBI.pm line 717
<- connected('dbi:SQLite:dbname=test.sqlite', '', ...)= undef at DBI.pm line 723
<- connect= DBI::db=HASH(0x204e278)
<- STORE('dbi_connect_closure', CODE(0x204da08))= 1 at DBI.pm line 732
<- DESTROY(DBI::db=HASH(204e1d0))= undef
<- disconnect_all= '' at DBI.pm line 740
! <- DESTROY(DBI::dr=HASH(204da38))= undef during global destruction