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