0

我目前有一个使用 PostgreSQL 数据库的 Rails 3.2.9 应用程序,当我将 Mac Mini 服务器升级到 Mountain Lion 时,这些数据库是使用 PgAdmin 重新创建的。数据库创建为我不知道的 9.2.1 版本。我想我使用的 PgAdmin 版本使用该版本号创建了它们。我只有升级到 Mountain Lion 的 Postgres 版本 9.1.4。我提交了另一个关于如何让 psql 的版本与我的数据库文件的版本相匹配的问题,因为这导致了实现 queue_classic 以运行后台作业的问题。在这一点上,我还没有收到任何回复。我继续查看并了解了 postgres.app。当前版本正在运行 PostgreSQL 9.2.2。

我已将当前数据库中的数据复制到 CSV 文件中。我还在 postgres.app 中使用了 psql 终端,并创建了我想在我的 Rails 应用程序中使用的新数据库。我决定更改 config/database.yml 中开发和测试数据库的定义,以确保在彻底测试之前不会弄乱生产数据库。为了确保我知道不同的数据库,我创建了不同名称的数据库,以确保我能够确定我的 Rails 应用程序指向使用 postgres.app 创建的数据库。

如 postgres.app 网站所述,我更改了 ,bashrc 中的路径。当我执行 which psql 时,它正确指向 postgres.app 版本 9.2.2。根据 postgres.app 网站所说的,我将 config/database/yml for development 更改为以下内容。

development:
  adapter: postgresql
  encoding: unicode
  database: newname_devl

当我像往常一样使用 localhost:3000 运行我的 Rails 应用程序时,应用程序指向原始数据库。我期待一个错误,因为我没有执行 rake db:migrate 来重建新数据库中的所有表。

不知何故,我需要能够让我的 PostgreSQL 数据库版本与 PostgreSQL 的版本相匹配,但我不知道从这里去哪里。我会继续寻找。

任何帮助,将不胜感激。

更新 2012 年 12 月 31 日上午 5:50 CST GMT-6

我尝试了下面的命令。这是我之前尝试过的一个。我得到了命令下列出的错误(用户名被屏蔽)。

psql -h localhost
psql: FATAL:  role "username" does not exist

我创建了角色“用户名”并再次尝试了该命令。我收到以下错误。

psql: FATAL:  database "username" does not exist

我决定尝试下面的命令。我得到了命令下列出的错误。

psql -h localhost -U _postgres
psql: FATAL:  database "_postgres" does not exist

数据库_postgres 不存在;数据库 postgres 可以。

4

1 回答 1

1

如果您已将 database.yml 更新为正确的名称,我不确定它将如何访问错误的数据库。当您将 database.yml 中的数据库名称更改为“foobar123”或您确定的某个名称在旧 Postgres 或新 Postgres 中都不存在时会发生什么?

于 2012-12-28T18:32:21.847 回答