[Catalyst] Weird -d flag and txn_do interaction...
Marcello Romani
mromani at ottotecnica.com
Mon Aug 27 16:10:23 GMT 2007
Hi,
I'm developing an app using cat and dbic, with postgresql 8.1.
I've got a table with a "unique" column.
When I try to insert a record that violates that constraint (the code is =
executed via txn_do($coderef)), I obviously get an exception from DBIC.
The problem is that if I run myapp_server without the -d flag, the =
exception string is correct; but if I run it _with_ the -d flag istead, =
the error gets cleared by a SELECT(*) COUNT executed with apparently no =
reason after the failing INSERT() query.
Therefore the error string I get is something like "command ignored =
until end of transaction block."
The connection options include AutoCommit=3D1.
The two attachments include the log output of myapp_server.pl for =
exactly the same http POST request, with and without the -d flag =
respectively.
Thanks in advance for any help.
-- =
Marcello Romani
Responsabile IT
Ottotecnica s.r.l.
http://www.ottotecnica.com
-------------- next part --------------
marcello at serverlinux ~/perl/LettereAttivazione $ DBI_TRACE=3D1 perl -Mlib=
=3Dlib script/lettereattivazione_server.pl
DBI 1.58-nothread default trace level set to 0x0/1 (pid 7375) at DBI.pm=
line 271 via DBI.pm line 8
You can connect to your server at http://serverlinux:3000
-> DBI->connect(dbi:Pg:database=3DLettereAttivazione, la, ****, HASH(0x=
90767ec))
-> DBI->install_driver(Pg) for linux perl=3D5.008008 pid=3D7375 ruid=3D=
1010 euid=3D1010
install_driver: DBD::Pg version 1.49 loaded from /usr/lib/perl5/site=
_perl/5.8.8/i686-linux/DBD/Pg.pm
<- install_driver=3D DBI::dr=3DHASH(0x907e870)
!! warn: 0 CLEARED by call to connect method
<- connect('database=3DLettereAttivazione' 'la' ...)=3D DBI::db=3DHASH(=
0x90e9cf0) at DBI.pm line 633
<- STORE('RaiseError' 1)=3D 1 at DBI.pm line 685
<- STORE('PrintError' 1)=3D 1 at DBI.pm line 685
<- STORE('AutoCommit' 1)=3D 1 at DBI.pm line 685
<- STORE('Username' 'la')=3D 1 at DBI.pm line 688
<> FETCH('Username')=3D 'la' ('Username' from cache) at DBI.pm line 688
<- connected('dbi:Pg:database=3DLettereAttivazione' 'la' ...)=3D undef =
at DBI.pm line 694
<- connect=3D DBI::db=3DHASH(0x90e9cf0)
<- STORE('dbi_connect_closure' CODE(0x90e9864))=3D 1 at DBI.pm line 703
<- STORE('HandleError' CODE(0x90e9f00))=3D 1 at DBI.pm line 782
<- STORE('ShowErrorStatement' 1)=3D 1 at DBI.pm line 783
<- STORE('RaiseError' 1)=3D 1 at DBI.pm line 784
<- STORE('PrintError' 0)=3D 1 at DBI.pm line 785
<- FETCH('AutoCommit')=3D 1 at Grouped.pm line 270
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907e870) at DBI.pm line 738
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at DBI.pm line 738
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- begin_work=3D 1 at DBI.pm line 809
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907e870) at DBI.pm line 66
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at DBI.pm line 66
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907e870) at Limit.pm line 301
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at Limit.pm line 301
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907e870) at Limit.pm line 338
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at Limit.pm line 338
<- prepare_cached('INSERT INTO accordi_quadro (codice, data, descrizion=
e, importo_totale, perc_otto) VALUES (?, ?, ?, ?, ?)' HASH(0x90f8df4) ...)=
=3D DBI::st=3DHASH(0x90f8e78) at DBI.pm line 1116
<- bind_param(1 '3' ...)=3D 1 at DBI.pm line 932
<- bind_param(2 '2007-01-01' ...)=3D 1 at DBI.pm line 932
<- bind_param(3 'description' ...)=3D 1 at DBI.pm line 932
<- bind_param(4 100 ...)=3D 1 at DBI.pm line 932
<- bind_param(5 65 ...)=3D 1 at DBI.pm line 932
!! ERROR: 7 'ERROR: una chiave duplicata viola il vincolo "accordi_qua=
dro_codice_key"
' (err#0)
<- execute=3D undef at DBI.pm line 938
-> HandleError on DBI::st=3DHASH(0x90f8e3c) via CODE(0x90e9f00) (undef)
ERROR: 7 'ERROR: una chiave duplicata viola il vincolo "accordi_qua=
dro_codice_key"
' (err#0)
<- FETCH('Active')=3D 1 at DBI.pm line 673
ERROR: 7 'ERROR: una chiave duplicata viola il vincolo "accordi_qua=
dro_codice_key"
' (err#0)
<- ping=3D 4 at DBI.pm line 673
!! ERROR: 7 CLEARED by call to rollback method
<- rollback=3D 1 at DBI.pm line 838
-------------- next part --------------
marcello at serverlinux ~/perl/LettereAttivazione $ DBI_TRACE=3D1 perl -Mlib=
=3Dlib script/lettereattivazione_server.pl -d
DBI 1.58-nothread default trace level set to 0x0/1 (pid 7372) at DBI.pm=
line 271 via DBI.pm line 8
[debug] Debug messages enabled
[debug] Loaded plugins:
.--------------------------------------------------------------------------=
--.
| Catalyst::Plugin::ConfigLoader 0.14 =
|
| Catalyst::Plugin::FormValidator 0.02 =
|
| Catalyst::Plugin::StackTrace 0.06 =
|
| Catalyst::Plugin::Static::Simple 0.17 =
|
'--------------------------------------------------------------------------=
--'
[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::HTTP"
[debug] Found home "/home/marcello/perl/LettereAttivazione"
[debug] Loaded components:
.-----------------------------------------------------------------+--------=
--.
| Class | Type =
|
+-----------------------------------------------------------------+--------=
--+
| LettereAttivazione::WebApp::Controller::AccordiQuadro | instanc=
e |
| LettereAttivazione::WebApp::Controller::Base | instanc=
e |
| LettereAttivazione::WebApp::Controller::LettereAttivazione | instanc=
e |
| LettereAttivazione::WebApp::Controller::Root | instanc=
e |
| LettereAttivazione::WebApp::Model::DB::Schema | instanc=
e |
| LettereAttivazione::WebApp::Model::DB::Schema::AccordiQuadro | class =
|
| LettereAttivazione::WebApp::Model::DB::Schema::AccordiQuadroVi- | class =
|
| ew | =
|
| LettereAttivazione::WebApp::Model::DB::Schema::Addenda | class =
|
| LettereAttivazione::WebApp::Model::DB::Schema::LettereAttivazi- | class =
|
| one | =
|
| LettereAttivazione::WebApp::Model::DB::Schema::Regioni | class =
|
| LettereAttivazione::WebApp::View::TT::Std | instanc=
e |
'-----------------------------------------------------------------+--------=
--'
[debug] Loaded Private actions:
.----------------------+--------------------------------------+------------=
--.
| Private | Class | Method =
|
+----------------------+--------------------------------------+------------=
--+
| /index | LettereAttivazione::WebApp::Control- | index =
|
| | ler::Root | =
|
| /end | LettereAttivazione::WebApp::Control- | end =
|
| | ler::Root | =
|
| /accordiquadro/crea- | LettereAttivazione::WebApp::Control- | create =
|
| te | ler::AccordiQuadro | =
|
| /accordiquadro/defa- | LettereAttivazione::WebApp::Control- | default =
|
| ult | ler::AccordiQuadro | =
|
| /accordiquadro/list | LettereAttivazione::WebApp::Control- | list =
|
| | ler::AccordiQuadro | =
|
| /lettereattivazione- | LettereAttivazione::WebApp::Control- | default =
|
| /default | ler::LettereAttivazione | =
|
| /lettereattivazione- | LettereAttivazione::WebApp::Control- | list =
|
| /list | ler::LettereAttivazione | =
|
'----------------------+--------------------------------------+------------=
--'
[debug] Loaded Path actions:
.-------------------------------------+------------------------------------=
--.
| Path | Private =
|
+-------------------------------------+------------------------------------=
--+
| /accordiquadro/create | /accordiquadro/create =
|
| /accordiquadro/list | /accordiquadro/list =
|
| /lettereattivazione/list | /lettereattivazione/list =
|
'-------------------------------------+------------------------------------=
--'
[info] Gestione lettere attivazione Enel powered by Catalyst 5.7007
You can connect to your server at http://serverlinux:3000
-> DBI->connect(dbi:Pg:database=3DLettereAttivazione, la, ****, HASH(0x=
907f5a0))
-> DBI->install_driver(Pg) for linux perl=3D5.008008 pid=3D7372 ruid=3D=
1010 euid=3D1010
install_driver: DBD::Pg version 1.49 loaded from /usr/lib/perl5/site=
_perl/5.8.8/i686-linux/DBD/Pg.pm
<- install_driver=3D DBI::dr=3DHASH(0x907fc90)
!! warn: 0 CLEARED by call to connect method
<- connect('database=3DLettereAttivazione' 'la' ...)=3D DBI::db=3DHASH(=
0x90f357c) at DBI.pm line 633
<- STORE('RaiseError' 1)=3D 1 at DBI.pm line 685
<- STORE('PrintError' 1)=3D 1 at DBI.pm line 685
<- STORE('AutoCommit' 1)=3D 1 at DBI.pm line 685
<- STORE('Username' 'la')=3D 1 at DBI.pm line 688
<> FETCH('Username')=3D 'la' ('Username' from cache) at DBI.pm line 688
<- connected('dbi:Pg:database=3DLettereAttivazione' 'la' ...)=3D undef =
at DBI.pm line 694
<- connect=3D DBI::db=3DHASH(0x90f357c)
<- STORE('dbi_connect_closure' CODE(0x90ed1c4))=3D 1 at DBI.pm line 703
<- STORE('HandleError' CODE(0x90f378c))=3D 1 at DBI.pm line 782
<- STORE('ShowErrorStatement' 1)=3D 1 at DBI.pm line 783
<- STORE('RaiseError' 1)=3D 1 at DBI.pm line 784
<- STORE('PrintError' 0)=3D 1 at DBI.pm line 785
<- FETCH('AutoCommit')=3D 1 at Grouped.pm line 270
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907fc90) at DBI.pm line 738
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at DBI.pm line 738
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- begin_work=3D 1 at DBI.pm line 809
<- FETCH('Active')=3D 1 at DBI.pm line 673
<- ping=3D 1 at DBI.pm line 673
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907fc90) at DBI.pm line 66
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at DBI.pm line 66
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907fc90) at Limit.pm line 301
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at Limit.pm line 301
<- FETCH('Driver')=3D DBI::dr=3DHASH(0x907fc90) at Limit.pm line 338
<> FETCH('Name')=3D 'Pg' ('Name' from cache) at Limit.pm line 338
<- prepare_cached('INSERT INTO accordi_quadro (codice, data, descrizion=
e, importo_totale, perc_otto) VALUES (?, ?, ?, ?, ?)' HASH(0x910b498) ...)=
=3D DBI::st=3DHASH(0x910b51c) at DBI.pm line 1116
<- bind_param(1 '3' ...)=3D 1 at DBI.pm line 932
<- bind_param(2 '2007-01-01' ...)=3D 1 at DBI.pm line 932
<- bind_param(3 'description' ...)=3D 1 at DBI.pm line 932
<- bind_param(4 100 ...)=3D 1 at DBI.pm line 932
<- bind_param(5 65 ...)=3D 1 at DBI.pm line 932
!! ERROR: 7 'ERROR: una chiave duplicata viola il vincolo "accordi_qua=
dro_codice_key"
' (err#0)
<- execute=3D undef at DBI.pm line 938
-> HandleError on DBI::st=3DHASH(0x910b4e0) via CODE(0x90f378c) (undef)
!! ERROR: 7 CLEARED by call to prepare_cached method
<- prepare_cached('SELECT COUNT( * ) FROM accordi_quadro me' HASH(0x912=
566c) ...)=3D DBI::st=3DHASH(0x8e6beac) at DBI.pm line 1116
!! ERROR: 7 'ERROR: current transaction is aborted, commands ignored u=
ntil end of transaction block
' (err#0)
<- execute=3D undef at DBI.pm line 938
-> HandleError on DBI::st=3DHASH(0x912569c) via CODE(0x90f378c) (undef)
!! ERROR: 7 CLEARED by call to prepare_cached method
<- prepare_cached('SELECT COUNT( * ) FROM accordi_quadro me' HASH(0x911=
b784) ...)=3D DBI::st=3DHASH(0x8e6beac) at DBI.pm line 1116
!! ERROR: 7 'ERROR: current transaction is aborted, commands ignored u=
ntil end of transaction block
' (err#0)
<- execute=3D undef at DBI.pm line 938
-> HandleError on DBI::st=3DHASH(0x912569c) via CODE(0x90f378c) (undef)
ERROR: 7 'ERROR: current transaction is aborted, commands ignored u=
ntil end of transaction block
' (err#0)
<- FETCH('Active')=3D 1 at DBI.pm line 673
ERROR: 7 'ERROR: current transaction is aborted, commands ignored u=
ntil end of transaction block
' (err#0)
<- ping=3D 4 at DBI.pm line 673
!! ERROR: 7 CLEARED by call to rollback method
<- rollback=3D 1 at DBI.pm line 838
More information about the Catalyst
mailing list