2

Rails を使用したアジャイル Web 開発 (第 4 版) の第 7 章を​​読んでおり、rake test:units を実行すると、次のエラーが表示されます。

rake aborted!
PG::Error: ERROR: invalid value for parameter "search_path": "public" 
DETAIL: schema "public" does not exist
: SET search_path TO public

Tasks: TOP => db:test:load => db:test:purge
(See full trace by running task with --trace)

OSX 10.7.4 を搭載した MacBook Pro を使用しています。Ruby 1.9.3、Rails 3.1.0、Rake 0.9.2.2、および PostgreSQL 9.1 を使用しています。私の本番、開発、およびテスト データベースはすべて存在し、移行されており、config/database.yml ファイル内の名前、ユーザー、およびパスワードと一致しています。それらすべてのスキーマは公開されています。

誰でも私を助けることができますか?

4

3 に答える 3

4

ユーザーの既定のデータベースにパブリック スキーマがあることを確認します。

たとえば、ユーザー「postgres」を使用してデータベースに接続する場合、「public」という名前のスキーマを持つ「postgres」という名前のデータベースが存在するはずです。

于 2012-09-13T13:06:14.723 に答える
2

http://www.postgresql.org/docs/9.1/static/infoschema-schemata.htmlから(私自身を強調):

ビュースキーマには、現在有効になっているロールが所有する 現在のデータベース内のすべてのスキーマが含まれています。

postgresデフォルトユーザー( )以外のユーザーと接続している場合、publicスキーマが表示されない場合があります。(はい、そのユーザーがデータベースを作成して所有している場合でも、publicスキーマはpostgres[1]によって所有されています。)

[1] http://archives.postgresql.org/pgsql-general/2008-10/msg01320.php

于 2012-07-31T09:33:49.437 に答える
1

エラー メッセージによると、スキーマpublicが存在しません。そこにあることを確認しましたか?これは、他のスキーマと同様に削除できる別のスキーマです。

于 2012-05-15T22:28:38.450 に答える