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

Posted

技术标签:

【中文标题】Postgres on Rails 致命:数据库不存在【英文标题】:Postgres on Rails FATAL: database does not exist 【发布时间】:2013-07-29 19:16:10 【问题描述】:

我重新安装了 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 我尝试只将第一个迁移文件放在迁移文件夹中(它不会在任何地方引用帖子),但我仍然遇到问题。我还尝试删除所有迁移文件,但仍然收到消息... rake db:drop:all 有帮助吗? 您是否尝试在任何模型中访问类级别的数据库? 【参考方案1】:

db:create:alldb:migrate 首先对我不起作用。 我在myapp/config/database.yml 文件中将我的数据库名称从development.pg 更改为developmentpg

数据库:db/developmentpg

然后是 rake db:create:allrake db:migrate,它对我有用。

谢谢

【讨论】:

【参考方案2】:

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

希望这会有所帮助!

【讨论】:

【参考方案3】:

我遇到了类似的问题。 我检查了不同的网站并尝试了他们的建议但没有奏效。 然后我尝试了你的建议。 rake db:create:allrake db:migrate 它对我有用。谢谢!

【讨论】:

这对我不起作用,直到我添加了 bundle exec。 bundle exec rake db:create:all。谢谢!【参考方案4】:

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

还要确保为 postgres 正确设置了 yml 文件。

【讨论】:

以上是关于Postgres on Rails 致命:数据库不存在的主要内容,如果未能解决你的问题,请参考以下文章

你好 postgres 数据库连接错误 Ruby on rails

Ruby On Rails Heroku Postgres数据库SSL连接

使用 ruby​​ on rails 将布尔值保存到 postgres 数据库

在Macbook上创建的Postgres DB的Ruby on Rails项目需要在Windows 10上访问

Postgres 13.2 on rails 5.2.4.1: ActiveRecord::NoDatabaseError: FATAL: database * does not exist on r

尝试从 Ruby on Rails 连接到 postgres(在 docker 容器中)