【问题标题】:trying to test connection to database尝试测试与数据库的连接
【发布时间】:2013-01-06 20:15:17
【问题描述】:

我正在使用Heroku 并创建了一个新应用程序和一个 Postgres 空数据库设置。

我已经安装了 Heroku 工具带,可以登录 Heroku 并成功运行以下命令:

c:\>heroku pg:info mydbname --app my-app-name

c:\>heroku pg:credentials mydbname --app my-app-name

现在,我已经创建了我的应用程序和一个空数据库,我正在尝试成功连接到数据库。

我正在使用 Ruby。我有我的项目的本地副本,我正在尝试创建一个简单的 ruby​​ 文件来连接到数据库。我只是想证明我可以从我的应用程序连接到数据库。

我正在查看 activerecord 选项here

但是,我运气不好。

任何 heroku/postgres 大师都可以帮助我指明正确的方向吗?数据库为空。我要做的只是第一步成功连接到数据库。

Ruby 文件:

require 'active_record'
require 'uri'

db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/jade')

ActiveRecord::Base.establish_connection(
  :adapter  => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
  :host     => db.host,
  :port     => db.port,
  :username => db.user,
  :password => db.password,
  :database => db.path[1..-1],
  :encoding => 'utf8'
)

【问题讨论】:

  • 到目前为止你到底尝试了什么?
  • 感谢您的回复。我对heroku,ruby和postgres完全陌生,所以请原谅我的任何新手问题或答案。我尝试使用显示的用于使用 activerecord 访问数据库的脚本创建一个 ruby​​ 文件,但是当我运行它时,我收到一条错误消息,说我需要安装 postgresql 适配器,但我已经安装了那个 gem。我跑了gem list 并列出了postgresql 适配器gem。我不确定在哪里查看或如何调试问题?
  • "我尝试使用显示的用于数据库访问的脚本创建一个 ruby​​ 文件" 这正是我们想要看到的。那个红宝石文件。
  • 我已经编辑了我的原始帖子以包含 ruby​​ 文件。

标签: postgresql heroku


【解决方案1】:

ENV['DATABASE_URL']的内容是什么
你能试试吗 启用用户环境编译

在构建过程中显示应用的配置变量允许构建时优化在更类似于运行时环境的环境中运行。这也允许使用配置变量来配置构建。

$ heroku labs:enable user-env-compile -a myapp
-----> Enabling user-env-compile for myapp... done
WARNING: This feature is experimental and may change or be removed without notice.

可以帮助你missing-database-url

编辑:

确认您的数据库 YAML 文件正在被正确解析。

ruby -ryaml -e "File.open('config/database.yml') { |f| puts YAML.load(f).inspect }"

配置 PostgreSQL 数据库

您的 config/database.yml 自定义为使用 PostgreSQL 数据库:

development:
  adapter: postgresql
  encoding: unicode
  database: MyDb
  pool: 5
  username: meuser
  password:

另一个提示
查看 Rails 应用的根目录中是否有一个名为 Gemfile 的文件。
寻找gem 'pg' 否则添加它。

【讨论】:

  • 我输出了 db 变量,它显示:postgres://localhost/jade 我没有在本地运行 postgres,所以它不应该是路径。我认为ENV['DATABASE_URL'] 会从远程数据库实例返回适当的数据库 url?我还启用了enable user-env-compile 并在安装 postgresql 适配器时遇到了同样的错误。我是否正确数据库 url 应该指向 heroku 中的远程数据库实例?
  • 您是否测试过手动设置:host => 'localhost', :username => 'meuser', :password => 'mypassword', ...
  • 我运行了凭证命令:heroku pg:credentials mydbname --app myappname。然后我手动将这些凭据输入到 ruby​​ 脚本文件中。每次,我运行文件,我都会得到“请安装 postgresql 适配器”。运行 gem list 表明我已安装 postgresql 适配器。
  • 您的 postgresql 数据库适配器的名称似乎是“postgres”,将其重命名为“postgresql”,修复 database.yml。
  • 抱歉...我不清楚在哪里将“postgres”更改为“postgresql”。我查看了 databasedotcom.yml 文件,它只包含 client_id、client_secret、主机、用户名和密码的名称/值对。我在那个文件中没有看到 postgres?那是我应该添加的吗?或者,还有其他地方需要改变吗?
猜你喜欢
  • 2021-07-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
相关资源
最近更新 更多