perl - Catalyst 不接受 DBIx 生成的架构

标签 perl catalyst dbix-class

我正在使用Catalyst::Plugin::AutoCRUD并使用链接的 CPAN 页面中提供的说明生成 DBIx 架构。具体来说,我复制/粘贴了那里列出的命令,并仅更改了与我的数据库相关的详细信息(“pg”=>“mysql”、不同的用户名/密码等)。

我现在有一个模式 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讨论,但据我所知,问题在于 Catalyst 被指向了错误的 *.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;

请帮忙!

最佳答案

您的架构名为DBIC::Database::Foo::Schema,但在配置文件中您有Database::foo::Schema。名称区分大小写,因此请更改架构路径和文件的名称或更正配置。

关于perl - Catalyst 不接受 DBIx 生成的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10674188/

相关文章:

mysql - DBIx::Class仅更新一行

java - 计算用于电子邮件分类的语言模型的困惑度

perl - 动态 ORM - Perl

perl - AnyEvent->计时器不能与 AnyEvent::Handle 一起使用?

perl - 为什么我的 Catalyst 应用程序重启很慢?

mysql - 递归遍历 DBIx::Class 关系

perl - 如何将十六进制转换为 RGB? (perl)

perl - 如何 "map"在 3 个值之间?

stripe-payments - Stripe : Do I need to refund for uncaptured charges?

sql - 如何使用 DBIx::Class 增加一列?