2010-05-19 4 views
1

Я пытаюсь создать статические схемы, используя DBIx::Class в Perl. Команда, показанная ниже, выводит Schema.pm и других файлов. Любая идея, что я делаю неправильно, или как отлаживать это?Почему не DBIx :: Class :: Schema :: Loader создает мои классы?

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

+0

Вместо этого я написал классы схемы. Кажется, это работает. Должна быть какая-то проблема с получением определений таблиц из SQL Server. –

ответ

0

У меня есть догадка, что .\lib не подходит. Попробуйте еще раз с ./lib или просто lib.

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

Спасибо за предложение. Я попробовал оба * lib * и *./Lib *. У них были одинаковые результаты - пустые Schema.pm и без модулей для таблиц. –

3

попробуйте добавить db_schema => "ДБО" и 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}]) 
+0

нужно перенести это, поскольку он решает мою проблему, аналогичную вопросу. – jchips12

2

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

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

0

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