Почему DBIx :: Class :: Schema :: Loader не создает мои классы?

Я пытаюсь создать статические схемы, используя DBIx :: Class на Perl. Команда, показанная ниже, выводит 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.

Я использую Strawberry Perl в Windows XP. База данных - это SQL Server 2000, доступ к которой осуществляется через соединение ODBC. Я могу успешно выполнять запросы, используя старый простой DBI с тем же соединением ODBC.


person Robert Wohlfarth    schedule 19.05.2010    source источник
comment
Вместо этого я вручную написал классы схемы. Кажется, это работает. Должна быть проблема с получением определений таблиц из SQL Server.   -  person Robert Wohlfarth    schedule 24.05.2010


Ответы (4)


попробуйте добавить 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}])
person Jay Jarvinen    schedule 15.02.2011
comment
нужно проголосовать за это, так как он решает мою проблему, аналогичную вопросу. - person jchips12; 17.05.2012

Я обнаружил, что если при загрузке схемы возникают какие-либо ошибки, make_schema_at прерывается и вообще ничего не записывает. Убедитесь, что вы диагностировали все ошибки, которые он выводит, и повторите попытку.

В моем случае у меня был набор debug => 1, который затем выводит на терминал то, что он делает, но это означает, что вы не можете легко увидеть, есть ли какие-либо ошибки среди всего этого вывода. Попробуйте установить debug => 0, чтобы проверить наличие реальных ошибок.

person Jason Lewis    schedule 28.03.2014

У меня подозрение, что .\lib неверно. Повторите попытку с ./lib или просто lib.

> perl -e'print ".\lib"' | hex
0000  2e 69 62                                          .ib
person daxim    schedule 20.05.2010
comment
Спасибо за предложение. Я пробовал и lib, и ./lib. У них были те же результаты - пустой Schema.pm и никаких модулей для таблиц. - person Robert Wohlfarth; 20.05.2010

У меня была такая же проблема при попытке извлечь схему (1200 таблиц!) Из базы данных Navision. В итоге я просто использовал ограничение -o для нужных мне таблиц.

person Dave Hodgkinson    schedule 07.10.2016