[Catalyst] connecting to more than one database

Oleg Pronin syber.rus at gmail.com
Thu Jul 3 15:57:18 BST 2008


Unfortunatelly, you cannot create relationship between two schemas, as they
in general case might be in different databases.

For example: if you have 2 different databases, but on the same server on
the same HDD, mysql could hypotetically make query with join between them,
but it can not.

You want DBIC to do the same: two different schemas that might be connected
to the same database.

2008/7/3 jagdish eashwar <jagdish.eashwar at gmail.com>:

>
> 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 giv=
en.
> Both these applications require details about the employees like their na=
me
> 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 ha=
ve
> to replicate the employee details for each  of the web applications in the
> respective databases.
>
> jagdish
>
> On Thu, Jul 3, 2008 at 6:10 PM, Marcello Romani <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>>:
>>>
>>>
>>>    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=3Dstatic dbi:mysql:hardware
>>>    'jag' 'passwd' '{ AutoCommit =3D> 1 }'
>>>
>>>    perl script/hardware_create.pl model CommonDB DBIC::Schema
>>>    Myhardware::Schema::CommonDB create=3Dstatic dbi:mysql:hardware 'jag'
>>>    'passwd' '{ AutoCommit =3D> 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 =3D>
>>>    'Myhardware::Schema::MyhardwareDB::Hardware', 'hw_emp_id');
>>>
>>>    # in Hardware.pm
>>>    #hardware belongs to employee
>>>    __PACKAGE__->belongs_to(hw_bt_emp_id =3D>
>>>    'Myhardware::Schema::CommonDB::Emp','hw_emp_id');
>>>
>>>    When I use these accessors in the tt2 templates, i get an undef erro=
r.
>>>
>>>    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>
>>>    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
>>
>>
>> _______________________________________________
>> 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/
>>
>
>
> _______________________________________________
> 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/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20080703/c17b1=
2f7/attachment.htm


More information about the Catalyst mailing list