[Catalyst] DBIC connecting to remote MySQL

Dan dan at entropy.homelinux.org
Sun May 23 13:08:52 GMT 2010


Hi Will.

Thanks for the response. Interesting suggestion :) I have the perl
debugger with a passion :) Clunky damned thing. I'm using Eclipse with
the EPIC plugin, and ( at work ) Komodo. Anyway, I stepped through a bit
of code ( quite a bit ) before I got bored with this and tried something
else.

According to
http://search.cpan.org/~frew/DBIx-Class-0.08121/lib/DBIx/Class/Storage/DBI.pm ... you can replace the dsn / user / password args with a coderef that returns a DBI connection. Sweet!

So I did this, and *still* get the error below. Doh! I am 100% certain
my connection string is good. So I assume I have another issue.

Don't really know where to go from here ... apart from ye olde fashioned
debugger.

Dan

On Sun, 2010-05-23 at 12:21 +0000, will at serensoft.com wrote:
> Well I'm kinda new to Catalyst and the MVC world myself, and I would
> have tried exactly what you've tried. So my small-time suggestion to
> you is to try it with perl debugging on, and then use this to drop
> into single-step mode somewhere prescient:
> 
> 
> $DB::single = 1;
> 
> 
> Then you
> $ perl -d script/easysaver_server.pl
> > c
> 
> 
> In particular if you can figure out where it's going to get the
> database connection established, right before then would be a great
> place for $DB::single. :) Somewhere in there it's apparently treating
> things a bit differently than normal DBI code... If you can step
> through that you'll likely find out what's going on.
> 
> 
> Hope this helps, at least a little... :)
> 
> 
> On Sun, May 23, 2010 at 11:38 AM, Dan <dan at entropy.homelinux.org>
> wrote:
>         Greetings.
>         
>         I realise that this is slightly off-topic ... I tried to sign
>         up to the
>         DBIC mailing list, but haven't received anything yet ( and
>         have checked
>         spam filter ).
>         
>         I'm trying to teach myself Catalyst. At the same time, I'm
>         trying to get
>         my head around a whole heap of other things, eg MVC ( read
>         about but not
>         used ), DBIC, JSON, JQuery ... more than I'd like to learn all
>         at once
>         to be honest.
>         
>         I can find *no* documentation on setting up a connection to a
>         remote
>         MySQL server, anywhere.
>         
>         I created a model with the _create.pl script, and edited the
>         package
>         config thing to look like this:
>         
>         __PACKAGE__->config(
>            schema_class => 'EasySaver',
>         
>            connect_info => {
>                dsn => 'dbi:mysql:dbname=EasySaver;host=archeopteryx',
>                user => 'username',
>                password => 'password',
>                AutoCommit => q{1},
>            }
>         );
>         
>         Doesn't work.
>         
>         Also tried this:
>         
>         __PACKAGE__->config(
>            schema_class => 'EasySaver',
>         
>            connect_info => {
>                dsn => 'dbi:mysql:EasySaver',
>                host => 'archeopteryx',
>                user => 'EasySaver',
>                password => 'loaderup',
>                AutoCommit => q{1},
>            }
>         );
>         
>         Also doesn't work.
>         
>         When I try to start the server:
>         
>         export DBIC_TRACE=1
>         script/easysaver_server.pl -r
>         
>          ... I get a MASSIVE stack trace, which I've pasted at the
>         bottom of
>         this message.
>         
>         Does anyone have a working example for specifying a server
>         IP / hostname
>         for a MySQL connection?
>         
>         Thanks :)
>         
>         Dan
>         
>         Couldn't load class (EasySaver) because: Couldn't instantiate
>         component
>         "EasySaver::Model::ESDB", "Attribute (schema_class) does not
>         pass the
>         type constraint because: Validation failed for
>         'Catalyst::Model::DBIC::Schema::Types::SchemaClass' failed
>         with value
>         EasySaver
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Moose/Meta/Attribute.pm line 746
>         
>         Moose::Meta::Attribute::_coerce_and_verify('Moose::Meta::Attribute=HASH(0x995cbb0)', 'EasySaver', 'EasySaver::Model::ESDB=HASH(0x9998ee0)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Moose/Meta/Attribute.pm line 398
>         
>         Moose::Meta::Attribute::initialize_instance_slot('Moose::Meta::Attribute=HASH(0x995cbb0)', 'Moose::Meta::Instance=HASH(0x9a62198)', 'EasySaver::Model::ESDB=HASH(0x9998ee0)', 'HASH(0x9998a50)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Class.pm line 364
>         
>         Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x992c120)', 'HASH(0x9998a50)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Class.pm line 351
>         
>          Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x992c120)',
>         'HASH(0x9998a50)') called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Moose/Meta/Class.pm line 255
>         
>          Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x992c120)',
>         'HASH(0x9998a50)') called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Moose/Object.pm line 25
>                Moose::Object::new('EasySaver::Model::ESDB',
>         'EasySaver',
>         'HASH(0x996c840)') called at generated method (unknown origin)
>         line 3
>         
>          Catalyst::Model::DBIC::Schema::new('EasySaver::Model::ESDB',
>         'EasySaver', 'HASH(0x996c840)') called
>         at /usr/lib/perl5/site_perl/5.10.1/MooseX/Traits/Pluggable.pm
>         line 131
>         
>          MooseX::Traits::Pluggable::new_with_traits('EasySaver::Model::ESDB',
>         'EasySaver') called
>         at /usr/lib/perl5/site_perl/5.10.1/CatalystX/Component/Traits.pm line
>         145
>         
>          CatalystX::Component::Traits::COMPONENT('EasySaver::Model::ESDB',
>         'EasySaver', 'HASH(0x9a5eea0)') called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 48
>         
>          Class::MOP::Method::Wrapped::__ANON__('EasySaver::Model::ESDB',
>         'EasySaver', 'HASH(0x9a5eea0)') called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 89
>         
>          Catalyst::Model::DBIC::Schema::COMPONENT('EasySaver::Model::ESDB',
>         'EasySaver', 'HASH(0x9a5eea0)') called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst.pm line 2507
>                eval {...} called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst.pm line
>         2507
>                Catalyst::setup_component('EasySaver',
>         'EasySaver::Model::ESDB') called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst.pm line 2421
>                Catalyst::setup_components('EasySaver') called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst.pm line 1143
>                Catalyst::setup('EasySaver') called
>         at /home/dan/src/EasySaver/script/../lib/EasySaver.pm line 42
>                require EasySaver.pm called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 101
>                Class::MOP::__ANON__() called
>         at /usr/lib/perl5/site_perl/5.10.1/Try/Tiny.pm line 71
>                eval {...} called
>         at /usr/lib/perl5/site_perl/5.10.1/Try/Tiny.pm line
>         67
>                Try::Tiny::try('CODE(0x95d4400)',
>         'Try::Tiny::Catch=REF(0x967ee90)')
>         called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 110
>                Class::MOP::load_first_existing_class('EasySaver')
>         called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 121
>                Class::MOP::load_class('EasySaver') called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst/ScriptRole.pm line
>         61
>         
>         Catalyst::ScriptRole::_run_application('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Script/Server.pm line 144
>                Catalyst::Script::Server::__ANON__() called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Restarter/Forking.pm line 20
>         
>         Catalyst::Restarter::Forking::_fork_and_start('Catalyst::Restarter::Forking=HASH(0x95d5190)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Restarter.pm line 80
>         
>         Catalyst::Restarter::run_and_watch('Catalyst::Restarter::Forking=HASH(0x95d5190)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Script/Server.pm line 178
>         
>         Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 48
>         
>         Class::MOP::Method::Wrapped::__ANON__('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 89
>         
>         Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/ScriptRunner.pm line 20
>                Catalyst::ScriptRunner::run('Catalyst::ScriptRunner',
>         'EasySaver',
>         'Server') called at script/easysaver_server.pl line
>         8"Compilation failed
>         in require
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 101.
>          at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 105
>                Class::MOP::__ANON__('Couldn\'t instantiate component
>         "EasySaver::Model::ESDB", "At...') called
>         at /usr/lib/perl5/site_perl/5.10.1/Try/Tiny.pm line 98
>                Try::Tiny::try('CODE(0x95d4400)',
>         'Try::Tiny::Catch=REF(0x967ee90)')
>         called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 110
>                Class::MOP::load_first_existing_class('EasySaver')
>         called
>         at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP.pm
>         line 121
>                Class::MOP::load_class('EasySaver') called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst/ScriptRole.pm line
>         61
>         
>         Catalyst::ScriptRole::_run_application('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Script/Server.pm line 144
>                Catalyst::Script::Server::__ANON__() called
>         at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Restarter/Forking.pm line 20
>         
>         Catalyst::Restarter::Forking::_fork_and_start('Catalyst::Restarter::Forking=HASH(0x95d5190)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Restarter.pm line 80
>         
>         Catalyst::Restarter::run_and_watch('Catalyst::Restarter::Forking=HASH(0x95d5190)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/Script/Server.pm line 178
>         
>         Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 48
>         
>         Class::MOP::Method::Wrapped::__ANON__('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/i686-linux-thread-multi/Class/MOP/Method/Wrapped.pm line 89
>         
>         Catalyst::Script::Server::run('Catalyst::Script::Server=HASH(0x92d0248)') called at /usr/lib/perl5/site_perl/5.10.1/Catalyst/ScriptRunner.pm line 20
>                Catalyst::ScriptRunner::run('Catalyst::ScriptRunner',
>         'EasySaver',
>         'Server') called at script/easysaver_server.pl line 8
>         
>         
>         _______________________________________________
>         List: Catalyst at lists.scsys.co.uk
>         Listinfo:
>         http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>         Searchable archive:
>         http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
>         Dev site: http://dev.catalyst.perl.org/
> 
> 
> 
> -- 
> will trillich
> "It's only by saying 'no' that you can concentrate on the things that
> are really important." -- Steve Jobs
> 
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/





More information about the Catalyst mailing list