6

Rails 3.2 アプリで Postgresql 9.2 の hstore を使用しているときに、テスト データベースをレーキングすると、次のようなエラーが発生しました。

PG::エラー: エラー: タイプ "hstore" が存在しません

テスト データベースはスキーマから構築されているため、開発データベースの hstore CREATE EXTENSION 移行は行われませんでした。これにより、rake db:test:prepare でエラーが発生しました。

これを修正する方法は?私は実際に修正を発見しました。もっと聞いてうれしいです。

4

4 に答える 4

12

デフォルトで hstore をサポートするように postgresql データベースを有効にしただけです (テンプレート データベースに hstore をサポートさせることにより)。これを行うには、次のコマンドを実行します。

psql -d template0 -c 'create extension hstore;'

その後、Rails テスト データベースは自動的に拡張機能をサポートします。

于 2012-09-22T05:03:32.810 に答える
2

psql -d template0 -c 'create extension hstore;'(@Connorの回答で)実行しようとすると、エラーが発生しました:

psql: FATAL: database "template0" is not currently accepting connections

代わりに、代わりにtemplate1 を更新するこのブログ投稿の手順に従いました。

1) 以下を含むファイル「hstore.sql」を作成します。

CREATE EXTENSION hstore;

2) 実行します。

psql -f /usr/local/Cellar/postgresql/9.2.1/share/postgresql/extension/hstore.sql -d template1

これもうまくいくと思います(ただし、試していません):

psql -d template1 -c 'create extension hstore;'

(template0 と template1 の間の異なる書き込み権限を確認するには、この記事に従いました)

于 2013-07-19T10:58:46.850 に答える
1

エラーを解決し、FATALtemplate0 が接続を受け入れるようにするには、次のコマンドを実行します。

UPDATE pg_database SET datallowconn = TRUE WHERE datname = 'template0';

于 2013-10-02T14:50:16.323 に答える
1

Herokuの場合

heroku pg:psql --app YOUR_APP_NAME

そして実行します

CREATE EXTENSION hstore;
于 2016-03-07T17:34:20.057 に答える