[prev] [thread] [next] [Date index for 2005/09/29]
I have some very wierd behaviour going on using Class::DBI. Columns appear to be being swapped internally, which is seriously screwing our application up. Now I may be missing something obvious here, of course, but here is the basic scenario: Here's the stripped down package: package Att::Task; use strict; use base qw(Att::Dbi); __PACKAGE__->table ('task'); __PACKAGE__->columns(Primary => qw(name)); __PACKAGE__->columns(Essential => qw( created created_by modified modified_by title application stage seq enabled shared freetext )); __PACKAGE__->has_a(application => qw(Att::Application)); __PACKAGE__->has_a(stage => qw(Att::Stage)); __PACKAGE__->has_a(enabled => qw(Att::EnabledDisabled)); __PACKAGE__->has_a(shared => qw(Att::YesNo)); 1 The relevant lines are shared (YesNo) and enabled(EnabledDisabled). We can take a look in the database to see what's in the relevant tables: mysql> SELECT name FROM enableddisabled; +----------+ | name | +----------+ | DISABLED | | ENABLED | +----------+ mysql> SELECT name FROM yesno; +------+ | name | +------+ | NO | | YES | +------+ Just to be pedantic here's the database constraint definitions for the relevant columns: CONSTRAINT `task_ibfk_2` FOREIGN KEY (`ENABLED`) REFERENCES `enableddisabled` (`NAME`), CONSTRAINT `task_ibfk_5` FOREIGN KEY (`SHARED`) REFERENCES `yesno` (`NAME`) Pretty simple stuff so far. Now let's take a look at a record from the database. mysql> SELECT name, enabled, shared FROM task WHERE name LIKE 'thenew%'; +--------------------------+---------+--------+ | name | enabled | shared | +--------------------------+---------+--------+ | thenewdeliverychec_02397 | ENABLED | YES | +--------------------------+---------+--------+ As expected, enabled=ENABLED and shared=YES. Now, take a look at what Class::DBI returns: Att::Task thenewdeliverychec_02397 $VAR1 = bless( { 'stage' => bless( { 'name' => '2005-09-13 14:08:13' }, 'Att::Stage' ), 'name' => 'thenewdeliverychec_02397', 'application' => bless( { 'name' => 'att' }, 'Att::Application' ), 'freetext' => 'Check what was delivered changed to analysis - ppt pptcomp', 'modified' => '0000000000analysis_00504', 'created' => 'The new delivery check', 'shared' => bless( { 'name' => 'ENABLED' }, 'Att::YesNo' ), 'modified_by' => '1', 'title' => '2005-09-13 14:08:13', 'seq' => bless( { 'id' => 'att' }, 'Att::Sequence' ), 'created_by' => 'pptcomp_25143', 'enabled' => bless( { 'name' => 'YES' }, 'Att::EnabledDisabled' ) }, 'Att::Task' ); All of a sudden, enabled=YES and shared=ENABLED!!! How the hell did that happen...?! If anyone has any bright ideas here, before I pull my remaining hair out, I'd appreciate it. TIA. -- Ciao Richard Foley Ciao - shorter than aufwiedersehen _______________________________________________ ClassDBI mailing list ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
[CDBI] Class::DBI internal column swapping wierdness ?
|
Generated at 15:06 on 02 Oct 2005 by mariachi v0.52