mysql – 如何使用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()方法没有多大关系.
谁能解释一下我的错误是什么?
谢谢

最佳答案 您可以在metacpan.org(更新,全文索引)和search.cpan.org上找到所有CPAN Perl模块的文档.

阅读DBI的文档,你会发现一个名为DBI_TRACE的环境变量,它在设置时会将每个SQL语句打印到STDOUT.
DBIx :: Class有一个类似的名为DBIC_TRACE.
第一个应该可以帮助您查看部署方法正在执行的操作.

连接数据库不需要密码吗?

点赞