Я использую PostgreSQL v9.0.1
с Rails
(и он deps) @v2.3.8
, благодаря использованию полнотекстовой возможности postgres, у меня есть таблица, которая определяется как:
CREATE TABLE affiliate_products ( id integer NOT NULL, name character varying(255), model character varying(255), description text, price numeric(9,2), created_at timestamp without time zone, updated_at timestamp without time zone, textsearch_vector tsvector, );
Обратите внимание на последнюю строку, это гарантирует, что активная запись не сможет обработать ее со стандартным самозагрузчиком схемы, поэтому мне нужно установить config.active_record.schema_format = :sql
в ./config/environment.rb
; и используйте rake db:test:clone_structure
вместо rake db:test:clone
.
Ничего из этого не слишком примечательно, только неудобно - однако rake db:test:clone_structure
не работает с ошибкой:
ERROR: must be owner of language plpgsql
Из-за строки #16
в моем результате ./db/development_schema.sql
:
CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;
В PostgreSQL v9.0+
язык plpsql
устанавливается суперпользователем в исходный шаблон, который затем доступен для вновь созданной схемы.
Я не могу запускать тесты в этом проекте, не решая этого, и даже редактирование ./db/development_schema.sql
вручную бесполезно, поскольку оно регенерируется каждый раз, когда я запускаю rake db:test:clone_structure
(и игнорируется rake db:test:clone
).
Надеюсь, кто-то может пролить свет на это?
Примечание. Я использовал как жемчуг pg 0.9.0
, так и драгоценный камень postgres
в версии 0.7.9.2008.01.28
- оба отображают идентичное поведение.
Мои товарищи по команде запускают PostgreSQL v8.4
, где языковая установка - это ручной шаг.