2012-11-28 59 views
1

我有一個正在工作的舞者應用程序。我正在使用數據庫的DBIC。舞者DBIC無法加載架構類

我想添加一些表到數據庫,所以我爲這些創建了新的文件。然而,現在當我重新啓動應用程序,我得到以下錯誤

Error while loading ././bin/app.pl: Could not load schema_class MyApp::Schema at /usr/local/share/perl/5.14.2/Dancer/Plugin/DBIC.pm line 42. 
Compilation failed in require at ././bin/app.pl line 5. 
BEGIN failed--compilation aborted at ././bin/app.pl line 5. 

當我刪除新文件,一切工作正常。

這裏是我的Schema.pm文件

package MyApp::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; 

1; 

我在哪裏可以得到更多的錯誤信息和我做錯了什麼?

+0

線42和周圍的線是什麼? – jordanm

+0

當它無法加載架構時,它是DBIC中的死線,你可以在這裏看到http://api.metacpan.org/source/IRONCAMEL/Dancer-Plugin-DBIC-0.1505/lib/Dancer/Plugin/DBIC。 pm – Craigy

回答

3

由於您使用的是__PACKAGE__->load_namespaces,因此將加載所有新類,這就解釋了新類文件的簡單存在會導致錯誤的原因。如果新類文件中存在語法錯誤,則加載該模式將會消失。

對於新的類文件,您可以使用perl -c,以確保他們能夠編譯並在問題沒有時更好地瞭解問題。

+0

就像我在我的問題中所說的,事情工作正常,直到我嘗試在子目錄中添加更多派生自DBIx :: Class :: Core的類來定義新表。不知怎的,這導致我給出的錯誤。 – Craigy

+0

@Craigy - 如果不能查看代碼就很難說。一個很容易犯的錯誤是添加類文件,但不會將新類添加到'MyApp/Schema.pm',但錯誤與此不匹配。 – jordanm

+0

@Craigy - 新類文件是否以'1;'結尾,以確保它們在'require'上返回true? – jordanm

相關問題