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”连接到数据库,那么应该有一个名为“postgres”的数据库,其模式名为“public”。

于 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 回答