Когда-то давно я делал так: <a href="http://as-pushkin.blogspot.com/search/label/DBIC">http://as-pushkin.blogspot.com/search/label/DBIC</a> . Но в классы приходилось руками добавлять имя схемы в имя таблицы.<br><br><div class="gmail_quote">
27 ноября 2009 г. 16:48 пользователь Orlovsky Alexander <span dir="ltr"><<a href="mailto:nordicdyno@yandex.ru">nordicdyno@yandex.ru</a>></span> написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Осваиваю DBIx::Class и захотелось мне сгенерить схему DBIx::Class::Schema::Loader-ом из табличек, которые есть в БД (PostgreSQL)<br>
Делаю все по мануалу и у меня оно не работает почему-то. (вместе с SQLite работает, но мне то нужен PostgreSQL)<br>
<br>
Ситуация такая:<br>
В начале оно унутре себя делает первый страшный запрос (*приведен ниже), который (зачем то) выбирает таблички:<br>
public.pg_freespacemap_pages<br>
public.pg_freespacemap_relations<br>
public.pg_buffercache<br>
а затем оно делает из них запросы вида:<br>
SELECT * FROM public.pg_buffercache WHERE ( 1 = 0 )<br>
и генерит схемку для этих таблиц<br>
вместо того чтобы генерить схемку из нужных мне таблиц из схемы к которой я коннекчусь.<br>
(при коннекте я указываю правильную базу и схему (не public ;)<br>
Че это оно?<br>
<br>
Запросы из: <a href="http://bytes.com/topic/postgresql/answers/172978-sql-command-list-tables" target="_blank">http://bytes.com/topic/postgresql/answers/172978-sql-command-list-tables</a><br>
работают нормально (для проверки запускал) и выдают список нужных мне таблиц.<br>
Все осложняется тем, что Postgress я не знаю, т.ч. вычленить проблему мне сложновато так вот сразу.<br>
<br>
Или может просто рисовать схему ручками при помощи DBIx::Class + DBIx::DBIx::Class::Schema - пойдя по пути наименьшего сопротивления? :) (а жалка! удобнее рисовать что-то в базке а потом оттуда выгружать, чем наоборот)<br>
<br>
Кто-нибудь вообще пользовался DBIx::Class::Schema::Loader в свзяке с PgSQL ? :) А то я может не там спрашиваю :)<br>
<br>
P/S<br>
Страшный (для меня) запрос:<br>
<br>
SELECT NULL::text AS "TABLE_CAT"<br>
, quote_ident(n.nspname) AS "TABLE_SCHEM"<br>
, quote_ident(c.relname) AS "TABLE_NAME"<br>
, CASE<br>
WHEN c.relkind = 'v' THEN<br>
CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM VIEW' ELSE 'VIEW' END<br>
ELSE<br>
CASE WHEN quote_ident(n.nspname) ~ '^pg_' THEN 'SYSTEM TABLE' ELSE 'TABLE' END<br>
END AS "TABLE_TYPE"<br>
, d.description AS "REMARKS" , quote_ident(t.spcname) AS "pg_tablespace_name"<br>
, quote_ident(t.spclocation) AS "pg_tablespace_location"<br>
, n.nspname AS pg_schema<br>
, c.relname AS pg_table<br>
FROM pg_catalog.pg_class AS c<br>
LEFT JOIN pg_catalog.pg_description AS d<br>
ON (c.oid = d.objoid AND c.tableoid = d.classoid AND d.objsubid = 0)<br>
LEFT JOIN pg_catalog.pg_namespace n ON (n.oid = c.relnamespace)<br>
LEFT JOIN pg_catalog.pg_tablespace t ON (t.oid = c.reltablespace)<br>
WHERE n.nspname = 'public'<br>
AND c.relname LIKE '%'<br>
AND c.relkind IN ('r','v')<br>
ORDER BY "TABLE_TYPE", "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME"<br>
<font color="#888888">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Andrei Protasovitski<br>< andrei[dot]protasovitski[at]gmail[dot]com ><br>Diemen, Netherlands<br>