【发布时间】: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