我是数据库和DBIx的新手:Class。如果这是一个完全新手的错误,请原谅我。 我只是按照教程,然后我尝试将架构部署到我的数据库。根据教程我将模块分成几个文件。在我运行createTable.pl之后'mysqlshow bla'向我展示了一个空数据库。
数据库已启动并正在运行。通过mysql CREATE TABLE语句创建表确实有效。
Skript文件应该根据模式创建表../ 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()方法没有多大关系。 谁能解释一下我的错误是什么? 谢谢
答案 0 :(得分:1)
您可以在metacpan.org(更新,全文索引)和search.cpan.org上找到所有CPAN Perl模块的文档。
阅读DBI的文档,你会发现一个名为DBI_TRACE的环境变量,它在设置时会将每个SQL语句打印到STDOUT。 DBIx :: Class有一个类似的名为DBIC_TRACE。 第一个应该可以帮助您了解部署方法正在做什么。
连接数据库是否需要密码?
答案 1 :(得分:1)
好的今天我再次玩perl和数据库的东西,我发现了错误是什么。
首先我开始使用DBI_TRACE和DBIC_TRACE,它产生了很多消息,但我无法处理,对我来说似乎没有什么能给我一个提示。
然后我搜索谷歌一段时间关于这个问题和更多的部署方法的例子。在某些时候,我注意到我的文件夹结构是错误的。
表的Schema文件应放在
中../ MyDatabase的/主/结果/ Album.pm
而不是放在
../ MyDatabase的/结果/ Album.pm
将Schema文件移动到正确的文件夹后,一切运行良好。
对于这个错误我感到羞耻:(但谢谢你的帮助