perl DBIx :: Class :: Schema

时间:2016-04-30 14:34:05

标签: mysql database perl dbix-class

我有DBIx :: Class :: Schema的问题,我创建了db然后是表:User,Post,....然后我在终端

中完成了这个
dbicdump -o dump_directory=./lib App::Schema 'dbi:mysql:my_db:localhost:3306' root password

命令使lib :: App :: Schema与Schema.pm一起使用,并在其中包含Result路径。 (使用表类)。

这是由Schema.pm

生成的
use utf8;
package App::Schema;
use strict;
use warnings;
use base 'DBIx::Class::Schema';

__PACKAGE__->load_namespaces;
1;

我使用架构:

use lib::App::Schema;
my $schema = App::Schema->connect("dbi:mysql:dbname=my_db", "root", "password");
my @m = $schema->resultset('User')->all;

在此文件中出现错误

DBIx::Class::Schema::source(): Can't find source for User at lib/Local/ThisFile.pm line 26

1 个答案:

答案 0 :(得分:0)

让我们假设您要为数据库的模式创建包Habr::Schema。您可以使用命令

dbicdump -o dump_directory=./lib Habr::Schema 'dbi:mysql:my_db:localhost:3306' root password

此后您可以使用此

访问该模块
use lib './lib';
use Habr::Schema;

虽然您必须小心use lib中的相对路径,但最好使用绝对路径,以便您可以从任何工作目录运行代码

您的完整程序可能如下所示。它打印id

中每一行的User
use strict;
use warnings 'all';
use feature 'say';

use Habr::Schema;

my $schema = App::Schema->connect(qw/ dbi:mysql:dbname=my_db  root  password /);

for my $user ( $schema->resultset('User')->all ) {
    say $user->id;
}