[Catalyst] connecting to more than one database

Marcello Romani mromani at ottotecnica.com
Thu Jul 3 16:27:43 BST 2008


jagdish eashwar ha scritto:
> 
> Hi,
> The first Catalyst application of mine deals with the leave records of 
> employees. The second one deals with the hardware that they have been 
> given. Both these applications require details about the employees like 
> their name and employee_no. So I put the employee details in one 
> database called 'common', and the leave particulars in another database 
> called 'leave' , and the hardware details in a third database called 
> 'hardware'.
> 
> I was able to put in the foreign key constraints at the time of table 
> creation. And these are working. I cannot, for example, insert an 
> emloyee_no in either the 'leave' or the 'hardware' database if it is not 
> existing in the 'common' database.
> 
> So when I was able to do what I had in mind at the database level, I 
> thought it would be possible to do the same with Catalyst and 
> DBIx::Class also. I still haven't lost hope.  It would be painful and 
> inelegant to have to replicate the employee details for each  of the web 
> applications in the respective databases.

I think you are using the word 'database' to refer to both the DBIC 
schema and the mysql database, which is confusing.

Since the two dsn in the previous post were the same, I assume your 
setup is as follows:

- all the data in a mysql database

- multiple Cat apps, each one with its own DBIC schema, all pointing to 
the sama mysql database, but dealing with a subset of tables

If this is the case, then the fact that the fk constraints at the 
database level work is to be expected (if you use InnoDB for example).
DBIC, on the other hand, thinks you have multiple databases.

> 
> jagdish
> On Thu, Jul 3, 2008 at 6:10 PM, Marcello Romani <mromani at ottotecnica.com 
> <mailto:mromani at ottotecnica.com>> wrote:
> 
>     Oleg Pronin ha scritto:
> 
>         How do you imagine yourself a request with join beetween 2
>         tables in different databases?
>         This is the reason you can't make relationships between
>         different schemas.
> 
> 
>     If it's not a typo, the two schemas connect to the same database on
>     the mysql side...
> 
>     Anyway, I think DBIC sees them as two different databases, even if
>     their connections strings are the same...
> 
> 
>         2008/7/3 jagdish eashwar <jagdish.eashwar at gmail.com
>         <mailto:jagdish.eashwar at gmail.com>
>         <mailto:jagdish.eashwar at gmail.com
>         <mailto:jagdish.eashwar at gmail.com>>>:
> 
> 
>            I am working on two Catalyst applications and had earlier set up
>            separate Mysql databases for each of them. Since some of the
>         tables
>            that these two applications use, are the same, I put the common
>            tables in a third database and created two models in each of the
>            Catalyst applications. I am, however, unable to set up  
>          relationships between  tables in the common and specific databases.
> 
>            I used myapp_create.pl to create the two models:
> 
>            perl script/hardware_create.pl model MyhardwareDB DBIC::Schema
>            Myhardware::Schema::MyhardwareDB create=static dbi:mysql:hardware
>            'jag' 'passwd' '{ AutoCommit => 1 }'
> 
>            perl script/hardware_create.pl model CommonDB DBIC::Schema
>            Myhardware::Schema::CommonDB create=static dbi:mysql:hardware
>         'jag'
>            'passwd' '{ AutoCommit => 1 }'
> 
>            and then put in the relationships between the employee and
>         hardware
>            tables as under:
> 
>            # in Emp.pm
>            #employee has many hardware
>            __PACKAGE__->has_many(emp_hm_hw =>
>            'Myhardware::Schema::MyhardwareDB::Hardware', 'hw_emp_id');
> 
>            # in Hardware.pm
>            #hardware belongs to employee
>            __PACKAGE__->belongs_to(hw_bt_emp_id =>
>            'Myhardware::Schema::CommonDB::Emp','hw_emp_id');
> 
>            When I use these accessors in the tt2 templates, i get an
>         undef error.
> 
>            undef error -
>         DBIx::Class::Relationship::Accessor::__ANON__(): Can't
>            find source for Myhardware::Schema::MyhardwareDB::Hardware at
>          
>          /home/jag/catalyst_trials/Myhardware/root/src/usr_fragment.tt2
>         line 8
> 
>            What am I doing wrong?
> 
>            Jagdish
> 
>            _______________________________________________
>            List: Catalyst at lists.scsys.co.uk
>         <mailto:Catalyst at lists.scsys.co.uk>
>         <mailto:Catalyst at lists.scsys.co.uk
>         <mailto: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/
> 
> 
> 
>         ------------------------------------------------------------------------
> 
> 
>         _______________________________________________
>         List: Catalyst at lists.scsys.co.uk <mailto: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/
> 
> 
> 
>     -- 
>     Marcello Romani
>     Responsabile IT
>     Ottotecnica s.r.l.
>     http://www.ottotecnica.com
> 
> 
>     _______________________________________________
>     List: Catalyst at lists.scsys.co.uk <mailto: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/
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> 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/


-- 
Marcello Romani
Responsabile IT
Ottotecnica s.r.l.
http://www.ottotecnica.com



More information about the Catalyst mailing list