我正在使用Rails的敏捷Web开发第7章(第4版),当我运行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文件中,并与名称,用户和密码相匹配。所有这些模式都是公开的。
任何人都可以帮助我吗?
答案 0 :(得分:4)
确保您的用户默认数据库具有公共架构。
例如,如果您使用用户" postgres"连接到您的数据库,那么应该有一个名为" postgres"的数据库。使用名为" public"。
的模式答案 1 :(得分: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
答案 2 :(得分:1)
根据错误消息,架构public
不存在。你检查一下,它在那里吗?它只是另一种可以像其他模式一样删除的模式。