如何使用DBIx :: Class正确部署架构?

时间:2013-08-31 18:19:57

标签: mysql perl dbix-class

我是数据库和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()方法没有多大关系。 谁能解释一下我的错误是什么? 谢谢

2 个答案:

答案 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文件移动到正确的文件夹后,一切运行良好。

对于这个错误我感到羞耻:(但谢谢你的帮助