【问题标题】:DBIx::Class::Schema::Loader connect to db on different machineDBIx::Class::Schema::Loader 连接到不同机器上的数据库
【发布时间】:2013-01-10 01:19:25
【问题描述】:
我正在通过命令行使用DBIx::Class:Schema::Loader 从我的数据库中为我的 Catalyst 应用程序的 DBIx::Class 生成架构。这是我使用的命令:
script/myapp_create.pl model DB DBIC::Schema myapp::Schema create=static \
components=TimeStamp,PassphraseColumn dbi:mysql:mydb 'root' '' '{ AutoCommit => 1 }'
但是,此命令现在不起作用,因为我的数据库位于单独的计算机上。我如何告诉它连接到什么IP?谢谢!
【问题讨论】:
标签:
perl
schema
catalyst
dbix-class
【解决方案1】:
我最终弄清楚了该怎么做。似乎如果您在最后一个散列之后传入另一个散列,则该散列将用于您的连接信息。所以只需将其添加到末尾:
'{host=>"ip_here"}'
解决了这个问题。这是完整的命令:
script/myapp_create.pl model DB DBIC::Schema myapp::Schema create=static \
components=TimeStamp,PassphraseColumn dbi:mysql:mydb 'root' '' \
'{ AutoCommit => 1 }' '{host=>"ip_here"}'
【解决方案2】:
dbi:mysql:... 参数是一个普通的 DBI 连接字符串。在第一个之后:是数据库驱动程序(DBD),在第二个之后是 DBD 特定参数。阅读 DBD::mysql 文档,了解如何在远程机器上指定数据库。