Postgres on Rails致命错误:数据库不存在。

39

我重新安装了Postgres(9.2.4),但在将其与Rails 3.2.11配合使用时遇到了问题。 我做了以下操作:

brew install postgresql
initdb /usr/local/var/postgres
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

现在我已经

$ psql --version
psql (PostgreSQL) 9.2.4
$ which psql
/usr/local/bin/psql

我的 database.yml 文件看起来像这样

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: Tyler
  password:
  host: localhost
  port: 5432

当我运行rake db:create:all 然后 rake db:migrate 时,我收到以下错误:

PG::Error: ERROR:  relation "posts" does not exist
LINE 5:              WHERE a.attrelid = '"posts"'::regclass
                                    ^
:         SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
          FROM pg_attribute a LEFT JOIN pg_attrdef d
            ON a.attrelid = d.adrelid AND a.attnum = d.adnum
         WHERE a.attrelid = '"posts"'::regclass
           AND a.attnum > 0 AND NOT a.attisdropped
         ORDER BY a.attnum

我尝试清除与过去数据库、迁移等有关的所有内容。

我删除了schema.rb、seed.rb以及迁移文件夹中的所有文件和其他我能想到的东西。但是错误提示“posts”让我想到仍然存在旧数据库的引用(该数据库有一张名为“posts”的表)。

有人知道如何解决这个错误,当尝试完全重新安装/刷新我的数据库时?


这听起来像是你的迁移文件不一致。你确定在引用它之前创建了“posts”吗? - iltempo
我尝试将仅包含第一个迁移文件的迁移文件夹放入(其中没有引用任何帖子),但我仍然遇到了问题。我还尝试删除所有迁移文件,但我仍然收到消息... - Tyler
rake db:drop:all 有帮助吗? - iltempo
你是否在你的任何模型中尝试以类级别访问数据库? - usha
4个回答

79
我遇到了类似的问题。 我查看了不同的网站并尝试了他们建议的方法,但都没有起作用。 然后我尝试了你建议的方法。 rake db:create:allrake db:migrate 对我有用。谢谢!

5
在我加入bundle exec之前,这个方法对我不起作用。谢谢!需要运行的命令为bundle exec rake db:create:all - acrogenesis

4

首先,您需要创建数据库。运行rake db:create:all命令。

同时,请确保您的yml文件已正确设置为postgres。


2

db:create:alldb:migrate在我第一次尝试时没有成功。

我在myapp/config/database.yml文件中将数据库名称从development.pg改为developmentpg

database: db/developmentpg

然后运行rake db:create:allrake db:migrate,这样就成功了。

谢谢


0

我尝试运行rake db:create:all,但没有成功。 然而,运行 bundle exec rake db:create:all 对我有用。

希望这可以帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接