【问题标题】:Why isn't DBIx::Class::Schema::Loader creating my classes?为什么 DBIx::Class::Schema::Loader 不创建我的类?
【发布时间】:2016-10-07 18:26:04
【问题描述】:

我正在尝试在 Perl 中使用 DBIx::Class 生成静态模式。下面显示的命令输出 Schema.pm 而没有其他文件。知道我做错了什么,或者如何调试它?

U:\wohlfarj\Software\PARS>perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:.\lib 
-e "make_schema_at('PARS::Schema',{debug=>1},['dbi:ODBC:PARS','user','password',{AutoCommit=>0}])"
Dumping manual schema for PARS::Schema to directory .\lib ...
Schema dump completed.

我在 Windows XP 上使用Strawberry Perl。数据库是 SQL Server 2000,通过 ODBC 连接访问。我可以使用具有相同 ODBC 连接的普通旧 DBI 成功运行查询。

【问题讨论】:

  • 我手写了架构类。这似乎行得通。从 SQL Server 中获取表定义一定有问题。

标签: perl sql-server-2000 dbix-class


【解决方案1】:

尝试添加 db_schema => "dbo" 和 odbc_exec_direct => 1,如:

perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:.\lib -e "make_schema_at('PARS::Schema',{debug=>1, db_schema => "dbo"},['dbi:ODBC:PARS','user','password',{AutoCommit=>0, odbc_exec_direct => 1}])

【讨论】:

  • 需要投票赞成这个,因为它解决了与问题类似的问题。
【解决方案2】:

我发现,如果在模式加载中出现任何错误,make_schema_at 将中止并且根本不写入任何内容。确保您诊断出它输出的任何错误,然后重试。

在我的情况下,我设置了 debug=>1,然后将它正在执行的操作输出到终端,但这意味着您无法轻松查看所有输出中是否有任何错误。尝试设置 debug=>0 来检查实际错误。

【讨论】:

    【解决方案3】:

    我有一种预感,.\lib 不正确。使用./lib 或仅使用lib 重试。

    > perl -e'print ".\lib"' | hex
    0000  2e 69 62                                          .ib
    

    【讨论】:

    • 感谢您的建议。我尝试了 lib./lib。他们有相同的结果 - 空 Schema.pm 并且没有用于表的模块。
    【解决方案4】:

    我在尝试从 Navision 数据库中提取模式(1200 个表!)时遇到了同样的问题。我最终只是对我想要的表使用了“-o 约束”。

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      相关资源
      最近更新 更多