我正在使用Catalyst::Plugin::AutoCRUD并使用链接的CPAN页面中提供的说明生成DBIx架构。具体来说,我复制/粘贴了那里列出的命令,只更改了与我的数据库相关的详细信息('pg'=>'mysql',不同的用户名/ pw等)。
我现在有一个架构DBIC :: Database :: foo :: Schema。 Schema是一个包含* .pm的文件,用于我的数据库中的每个表,也是它自己的Schema.pm。
我的配置文件包含以下条目:
<Model::AutoCRUD::DBIC>
schema_class Database::foo::Schema
connect_info dbi:mysql:dbname=foo
connect_info user
connect_info pass
<connect_info>
AutoCommit 1
</connect_info>
</Model::AutoCRUD::DBIC>
当我启动AutoCRUD服务器时,收到以下错误消息:
Couldn't instantiate component "DemoApp::Model::AutoCRUD::DBIC", "Attribute (schema_class)
does not pass the type constraint because: Validation failed for
'Catalyst::Model::DBIC::Schema::Types::SchemaClass' with value Database::foo::Schema at
/Library/Perl/5.12/darwin-thread-multi-2level/Moose/Meta/Attribute.pm line 1275.
由于我是Catalyst和这个插件的新手,我不知道如何解决这个问题。谷歌一直没有帮助 - 我发现this讨论,但从我可以说的问题是,催化剂被指向错误的* .pm(虽然我可能会误读这个)。
如果这有用,以下是Schema.pm的内容:
use utf8;
package DBIC::Database::foo::Schema;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use strict;
use warnings;
use base 'DBIx::Class::Schema';
__PACKAGE__->load_namespaces;
# Created by DBIx::Class::Schema::Loader v0.07024 @ 2012-05-20 07:25:21
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cevz/k4rUWIcEhMl29r0QA
# You can replace this text with custom code or comments, and it will be preserved on regeneration
1;
请帮忙!
答案 0 :(得分:2)
您的架构名为DBIC::Database::Foo::Schema
,但在配置文件中您有Database::foo::Schema
。名称区分大小写,因此要么更改架构路径和文件的名称,要么更正配置。
答案 1 :(得分:0)
从Catalyst manual完全重建DBIC类解决了这个问题。虽然我无法确定Moose在第一组课程中不可接受的内容,但第二组课程还有一个问题:为每个课程(即每个* .pm)生成一行__PACKAGE__->meta->make_immutable;
。将其注释掉并重新启动Catalyst会产生一个正常运行的CRUD应用程序。