我是数据库和 DBIx:Class 的新手。因此,如果这完全是新手的错误,请原谅我。我只是按照教程进行操作,然后尝试将架构部署到我的数据库中。根据教程,我将模块分成几个文件。在我运行 createTable.pl 'mysqlshow bla' 后,我看到了一个空数据库。
数据库已启动并正在运行。通过 mysql CREATE TABLE 语句创建表确实有效。
脚本文件,应该根据模式创建一个表 ../createTable.pl
#!/usr/bin/env perl
use Modern::Perl;
use MyDatabase::Main;
my ($database, $user) = ('bla', 'flo');
my $schema = MyDatabase::Main->connect("dbi:mysql:dbname=$database", "$user");
$schema->deploy( { auto_drop_tables => 1 } );
Main.pm 用于加载命名空间 ../MyDatabase/Main.pm
package MyDatabase::Main;
use base qw/ DBIx::Class::Schema /;
__PACKAGE__->load_namespaces();
1;
表的架构文件 ../MyDatabase/Result/Album.pm
package MyDatabase::Main::Result::Album;
use base qw/ DBIx::Class::Core /;
__PACKAGE__->load_components(qw/ Ordered /);
__PACKAGE__->position_column('rank');
__PACKAGE__->table('album');
__PACKAGE__->add_columns(albumid =>
{ accessor => 'album',
data_type => 'integer',
size => 16,
is_nullable => 0,
is_auto_increment => 1,
},
artist =>
{ data_type => 'integer',
size => 16,
is_nullable => 0,
},
title =>
{ data_type => 'varchar',
size => 256,
is_nullable => 0,
},
rank =>
{ data_type => 'integer',
size => 16,
is_nullable => 0,
default_value => 0,
}
);
__PACKAGE__->set_primary_key('albumid');
1;
我已经花了几个小时通过谷歌寻求帮助,但与 deploy() 方法没有太大关系。谁能解释我的错误是什么?谢谢