【问题标题】:How do I create multiple database connections in Catalyst with DBIC如何使用 DBIC 在 Catalyst 中创建多个数据库连接
【发布时间】:2023-03-11 12:42:01
【问题描述】:

我正在尝试连接到同一主机上的两个 postgres 数据库并且没有运气。 (这是两个独立的数据库,而不是两个架构。)

我正在使用Schema::Loader 创建我的结果类文件以及使用以下命令的数据库连接文件:

第一个数据库

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema create=static dbi:Pg:dbname=handshake_vt 'user' 'pw' '{ AutoCommit => 1 }'

对于我的第二个数据库,我应该像这样将表类放在同一个 Schema 中:

script/myapp_create.pl model DB2 DBIC::Schema MyApp::Schema create=static dbi:Pg:dbname=members_vt 'user' 'pw' '{ AutoCommit => 1 }'

或者我应该像这样创建一个单独的模式名称空间:

script/myapp_create.pl model DB2 DBIC::Schema MyApp::Schema::Members create=static dbi:Pg:dbname=members_vt 'user' 'pw' '{ AutoCommit => 1 }'

我已经尝试了这两种方法,但两种方法的错误略有不同。

以下是我使用单一架构方法的文件:

1.  DB.pm

package MyApp::Model::DB;

use strict;
use base 'Catalyst::Model::DBIC::Schema';

__PACKAGE__->config(
    schema_class => 'MyApp::Schema',

    connect_info => {
        dsn => 'dbi:Pg:dbname=handshake_vt',
    }
);


2.  DB2.pm

package MyApp::Model::DB2;

use strict;
use base 'Catalyst::Model::DBIC::Schema';

__PACKAGE__->config(
    schema_class => 'MyApp::Schema',

    connect_info => {
        dsn => 'dbi:Pg:dbname=legislators_vt',
    }
);


3.  Schema.pm

package MyApp::Schema;

__PACKAGE__->load_namespaces;;

我的表格类基本上是这样的:

package Handshake::Schema::Result::Country;

…

__PACKAGE__->table("countries");

感谢您的帮助。

【问题讨论】:

    标签: database perl postgresql catalyst dbix-class


    【解决方案1】:

    您创建不同架构的第一种方法是正确的,每个数据库都有一个。

    每个数据库在不同的 Perl 命名空间中都有自己的 DBIx::Class 架构。

    如果您将在 Catalyst 应用程序之外使用 DBIC 架构,那么在 Catalyst 应用程序之外选择命名空间也是有意义的,

    例如Company::Model::DB1, Company::Model::DB2 and Company::Web::App

    然后为每个 DBIx::Class 模式创建一个具有不同连接参数的 Catalyst 模型。

    在 Catalyst 中,您可以使用 $c->model('DB1')$c->model('DB2') 访问这两个模型。

    【讨论】:

      【解决方案2】:

      您需要创建两个单独的架构(不是一个)和两个模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-18
        • 2017-11-09
        • 1970-01-01
        • 2012-05-22
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        • 2014-09-14
        相关资源
        最近更新 更多