[prev] [thread] [next] [Date index for 2004/10/15]
I'm getting the exception trace (printed below) which appears to me to be caused by an uninitialized primary key passed to execute by Class::DBI::_insert_row(). The code continues and everything seems to work correctly. However, this 21 line strict warning is a little disturbing, and the screen I/O slows down my program. If I put a breakpoint on this line: Class::DBI::_insert_row(/Library/Perl/5.8.4/Class/DBI.pm:636): 636: $sth->execute(values %$data); I see that %$data contains: DB<38> x %$data 0 'zmessage' 1 Model::Message=HASH(0x1a0d318) 'z_pk' => 2 2 'z_pk' 3 undef 4 'zlanguage' 5 1 6 'zname' 7 'MS-DOS' 'z_pk" is the table's primary key. Note that it is the only undefined variable in the hash above. I am using Class::DBI 0.96, a SQLite3 database, and DBD::SQLite-1.07. Is this a known problem? Do I need to provide my own auto_increment method? (Note, subclassing from Class::DBI::SQLite does not seem to fix the problem.) FWW - it looks like the four following statements could be moved before the execute() to fix the problem. Drew Use of uninitialized value in subroutine entry at /Library/Perl/5.8.4/DBIx/ContextualFetch.pm line 51. DBIx::ContextualFetch::st::_untaint_execute ('DBIx::ContextualFetch::st=HASH(0x19eb27c)', 'foo', 'undef', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'MS-DOS File System', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'msdosfs_Tier1_proj', 'FSPersonalities:MS-DOS:FSName') called at /Library/Perl/5.8.4/DBIx/ContextualFetch.pm line 31 DBIx::ContextualFetch::st::execute('DBIx::ContextualFetch::st=HASH (0x19eb27c)', 'foo', 'undef', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'MS-DOS File System', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'msdosfs_Tier1_proj', 'FSPersonalities:MS-DOS:FSName') called at /Library/Perl/5.8.4/Class/DBI.pm line 636 eval {...} called at /Library/Perl/5.8.4/Class/DBI.pm line 629 Class::DBI::_insert_row('Model::Message=HASH(0x1a0d318)', 'HASH(0x1a0e144)') called at /Library/Perl/5.8.4/Class/DBI.pm line 590 Class::DBI::_create('Model::Message', 'HASH(0x19d8f30)') called at /Library/Perl/5.8.4/Class/DBI.pm line 470 Class::DBI::create('Model::Message', 'HASH(0x1a09fd8)') called at /Library/Perl/5.8.4/Class/DBI.pm line 451 Class::DBI::find_or_create('Model::Message', 'HASH(0x1a09fd8)') called at Model/Translation.pm line 41 Model::Translation::addTranslation('undef', 'project', 'msdosfs_Tier1_proj', 'filePath', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'source', 'MS-DOS File System', 'sourceLanguageCode', 'en', ...) called at ./importTranslations.pl line 102 main::processAD('/Users/drew/lre/LSM/glossaries/FU-French/ msdosfs_Tier1_proj.ad') called at ./importTranslations.pl line 27 Use of uninitialized value in subroutine entry at /Library/Perl/5.8.4/DBIx/ContextualFetch.pm line 51. DBIx::ContextualFetch::st::_untaint_execute ('DBIx::ContextualFetch::st=HASH(0x19eb27c)', 'foo', 'undef', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'MS-DOS File System', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'msdosfs_Tier1_proj', 'FSPersonalities:MS-DOS:FSName') called at /Library/Perl/5.8.4/DBIx/ContextualFetch.pm line 31 DBIx::ContextualFetch::st::execute('DBIx::ContextualFetch::st=HASH (0x19eb27c)', 'foo', 'undef', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'MS-DOS File System', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'msdosfs_Tier1_proj', 'FSPersonalities:MS-DOS:FSName') called at /Library/Perl/5.8.4/Class/DBI.pm line 636 eval {...} called at /Library/Perl/5.8.4/Class/DBI.pm line 629 Class::DBI::_insert_row('Model::Message=HASH(0x1a0d318)', 'HASH(0x1a0e144)') called at /Library/Perl/5.8.4/Class/DBI.pm line 590 Class::DBI::_create('Model::Message', 'HASH(0x19d8f30)') called at /Library/Perl/5.8.4/Class/DBI.pm line 470 Class::DBI::create('Model::Message', 'HASH(0x1a09fd8)') called at /Library/Perl/5.8.4/Class/DBI.pm line 451 Class::DBI::find_or_create('Model::Message', 'HASH(0x1a09fd8)') called at Model/Translation.pm line 41 Model::Translation::addTranslation('undef', 'project', 'msdosfs_Tier1_proj', 'filePath', 'msdosfs_Tier1_proj/msdosfs_Tier1-7B46/System/Library/Filesyst...', 'source', 'MS-DOS File System', 'sourceLanguageCode', 'en', ...) called at ./importTranslations.pl line 102 main::processAD('/Users/drew/lre/LSM/glossaries/FU-French/ msdosfs_Tier1_proj.ad') called at ./importTranslations.pl line 27 Class::DBI::create(/Library/Perl/5.8.4/Class/DBI.pm:455): 0 'zmessage' 1 Model::Message=HASH(0x1a0d318) 'z_pk' => 2 2 'z_pk' 3 undef 4 'zlanguage' 5 1 6 'zname' 7 'MS-DOS'
(message missing) |
uninitialized PK when inserting row into SQLite?
|
Re: uninitialized PK when inserting row into SQLite?
|
uninitialized PK when inserting row into SQLite?
|
Generated at 11:34 on 01 Dec 2004 by mariachi v0.52