【问题标题】:Ruby on Rails/Postgres - How can I create a new database for a user that doesn't exist?Ruby on Rails/Postgres - 如何为不存在的用户创建新数据库?
【发布时间】:2019-03-15 20:50:12
【问题描述】:

我已经克隆了一个存储库,并通过装有 Ubuntu 并使用 RVM 的虚拟机设置了所有内容。所有关于 Ruby on Rails 的东西都是通过 RVM 安装的。

我的问题是,我的 Ubuntu 登录名与我假设数据库想要的用户不同。例如,我的 Ubuntu 登录名是 Matt,但是当我启动 rails 服务器并加载到 localhost:3000 时,它是这样说的:

ActiveRecord::NoDatabaseError
FATAL: role "James" does not exist 

我知道这是一个 postgres 错误,但我现在应该怎么做才能使它正常工作?我已经搜索了以前的 StackOverflow 答案,但方法不起作用。

例如。我变了

local   all             postgres                                peer

到

local   all             postgres                                trust

或者使用psql -h localhost -U postgres 或sudo -u postgres createuser -s $(whoami); createdb $(whoami) 再一次,它不起作用。第一个命令要求输入密码,我不知道。

【问题讨论】:

  • sudo -u postgres createuser -s $(whoami); 的密码是您希望 postgres 角色的密码。但我真的会将默认的 postgres 帐户命名为与您的操作系统用户名不同的名称,例如 pg_user。您希望它们相同的唯一原因是无密码身份验证。
  • 此 QA 可能会有所帮助:stackoverflow.com/questions/12720967/…
  • 您需要查看您的 config/database.yml 文件。问题可能不在于 Postgres,而在于您的 Rails 配置。默认情况下,没有列出user:,Rails 将尝试使用启动服务器的用户名进行连接。

标签: ruby-on-rails ruby postgresql ubuntu


【解决方案1】:

您可以通过编辑<project_root>/config/database.yml (source) 来更改 Rails 用于连接到 PostgreSQL 的用户。

另外,您的第一个psql 命令不起作用的原因是-h localhost 需要pg_hba.conf 中的host 条目,而不是local。您可以省略-h localhost 以使local 条目生效,因为默认是通过本地套接字连接。

【讨论】:

  • rails gem 的安装位置与他的配置文件的位置无关。它们将与使用 rails 的项目相关,而不是gem 本身。
猜你喜欢
  • 1970-01-01
  • 2011-05-06
  • 2013-07-29
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 2018-07-12
相关资源
最近更新 更多