Я использую 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, где языковая установка - это ручной шаг.