[Dbix-class] DBIx::Class::Schema->deploy and ORACLE woes

Scott Pham (scpham) scpham at cisco.com
Thu Jun 5 01:21:05 BST 2008


Maybe take a look at 

SQL::Translator::Parser::DBIx::Class

Line 167. 

I think that might be the problem. After reading this thread.

http://osdir.com/ml/lang.perl.modules.dbix-class/2007-03/msg00106.html

I wonder if you can just do a cascade_copy => 0 to your has_many to get
rid of the 'ON UPDATE CASCADE'.



"umuntu ngumuntu ngabantu"

-----Original Message-----
From: Doug Scoular (dscoular) 
Sent: Wednesday, June 04, 2008 6:01 PM
To: DBIx::Class user and developer list
Subject: Re: [Dbix-class] DBIx::Class::Schema->deploy and ORACLE woes

Hi Scott,
     I guess my real issue is not having to explicitly
     list data_type and size in my schema for ORACLE but
     how to work around deploy() producing "ON UPDATE CASCADE"
     which, apparently, isn't supported by ORACLE:

http://www.oreview.com/9704dalb.htm
http://asktom.oracle.com/tkyte/update_cascade/index.html

Scott Pham (scpham) wrote:

> What does your other 2 tables look like? Can you post the schema 
> definition for tables Runner::Model::TestGroup Runner::Model::Host

    Fancy bumping into you here ;^)

    Here are the definitions of my Host and TestGroup
    modules:

Host:
package Runner::Model::Host; 
 
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('hosts'); __PACKAGE__->add_columns( 
                         id => { 
                                data_type => 'integer', 
                                is_auto_increment => 1, 
                               }, 
                         creation => { 
                                      data_type => 'datetime', 
                                     }, 
                         modification => { 
                                          data_type => 'datetime', 
                                         }, 
                         name => { 
                                  data_type => 'varchar', 
                                  size => 255, 
                                  is_unique => 1, 
                                 }, 
                         manufacturer =>  { 
                                           data_type => 'varchar', 
                                           is_nullable => 1, 
                                           size => 255, 
                                     }, 
                         product =>  { 
                                      data_type => 'varchar', 
                                      size => 255, 
                                      is_nullable => 1, 
                                     }, 
                         version =>  { 
                                      data_type => 'varchar', 
                                      size => 255, 
                                      is_nullable => 1, 
                                     }, 
                         serial =>  { 
                                     data_type => 'text', 
                                     is_nullable => 1, 
                                    }, 
                         ram =>  { 
                                  data_type => 'varchar', 
                                  size => 255, 
                                  is_nullable => 1, 
                                 }, 
                         cpuModel => { 
                                      data_type => 'varchar', 
                                      size => 255, 
                                      is_nullable => 1, 
                                     }, 
                         cpuCount =>  { 
                                       data_type => 'integer', 
                                      }, 
                         cpuCoreCount =>  { 
                                           data_type => 'integer', 
                                          }, 
                         cpuSpeed => { 
                                      data_type => 'varchar', 
                                      size => 255, 
                                      is_nullable => 1, 
                                     }, 
                         os => { 
                                data_type => 'text', 
                                is_nullable => 1, 
                               }, 
                         arch => { 
                                  data_type => 'varchar', 
                                  size => 255, 
                                  is_nullable => 1, 
                                 }, 
                         public => { 
                                    data_type => 'text', 
                                    is_nullable => 1, 
                                   }, 
                         private => { 
                                    data_type => 'text', 
                                     is_nullable => 1, 
                                   }, 
                        ); 
 
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many('host_to_testgroups' =>
'Runner::Model::HostToTestGroup', 'HostID');
__PACKAGE__->many_to_many(testgroups => 'host_to_testgroups',
'TestGroupID'); __PACKAGE__->has_many('results' =>
'Runner::Model::Result'); 

TestGroup:
package Runner::Model::TestGroup; 
 
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('testgroups'); __PACKAGE__->add_columns( 
                         id => { 
                                data_type => 'integer', 
                                is_auto_increment => 1, 
                               }, 
                         creation => { 
                                      data_type => 'datetime', 
                                     }, 
                         modification => { 
                                          data_type => 'datetime', 
                                         }, 
                         name => { 
                                  data_type => 'varchar', 
                                  size => 255, 
                                  is_unique => 1, 
                                 }, 
                        ); 
 
__PACKAGE__->set_primary_key('id');
__PACKAGE__->has_many('host_to_testgroups' =>
'Runner::Model::HostToTestGroup',\
 'TestGroupID');
__PACKAGE__->many_to_many('hosts' => 'host_to_testgroups', 'HostID'); 
 
__PACKAGE__->has_many('testgroup_to_test' =>
'Runner::Model::TestGroupToTest', \ 'TestGroupID');
__PACKAGE__->many_to_many('tests' => 'testgroup_to_test', 'TestID'); 

	I can send you the rest of the schema directly if you like.
	Here's are the link tables HostToTestGroup and TestGroupToTest
too:

HostToTestGroup:

package Runner::Model::HostToTestGroup; 
 
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('host_to_testgroup');
__PACKAGE__->add_columns( 
                         HostID => { 
                                    data_type => 'integer', 
                                   }, 
                         TestGroupID => { 
                                         data_type => 'integer', 
                                        } 
                        );
#__PACKAGE__->add_columns(qw/HostID TestGroupID/);
__PACKAGE__->set_primary_key(qw/HostID TestGroupID/);
__PACKAGE__->belongs_to('HostID' => 'Runner::Model::Host');
__PACKAGE__->belongs_to('TestGroupID' => 'Runner::Model::TestGroup'); 

TestGroupToHost:
package Runner::Model::TestGroupToTest; 
 
use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('testgroup_to_test');
__PACKAGE__->add_columns(qw/TestGroupID TestID/); 
                         TestGroupID => { 
                                         data_type => 'integer', 
                                        }, 
                         TestID => { 
                                    data_type => 'integer', 
                                   } 
                        ); 
 
__PACKAGE__->set_primary_key(qw/TestGroupID TestID/);
__PACKAGE__->belongs_to('TestID' => 'Runner::Model::Test');
__PACKAGE__->belongs_to('TestGroupID' => 'Runner::Model::TestGroup'); 

	Cheers,

	Doug



_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive:
http://www.grokbase.com/group/dbix-class@lists.rawmode.org



More information about the DBIx-Class mailing list