4

データベースと 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;

Google でヘルプを探すのにすでに数時間を費やしましたが、 deploy() メソッドに関連するものはあまりありません。誰かが私の間違いを説明できますか? ありがとうございました

4

2 に答える 2