【发布时间】:2012-06-29 01:38:40
【问题描述】:
我想让一个 Rails 应用程序与 PostgreSQL 一起工作,但发生了一些奇怪的事情。我的朋友们能够安装 PostgreSQL 并执行:
sudo su
su postgres
createdb development
紧随其后
rails server
没有错误。但是,当我尝试这样做时,我收到了一个奇怪的错误:
/Users/user/.rvm/gems/ruby-1.9.3-p194/gems/activerecord 3.2.5/lib/active_record/connection_adapters/postgresql_adapter.rb:1151:in `async_exec': PG::Error: ERROR: relation "reports" does not exist (ActiveRecord::StatementInvalid)
LINE 4: WHERE a.attrelid = '"reports"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"reports"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
请注意,“报告”是应用程序中的模型。
不管怎样,database.yml 文件如下所示:
development:
adapter: postgresql
encoding: unicode
database: development
pool: 5
username: postgres
password: post
(我不知道pool是什么意思,但是我已经把postgres密码设置成了post)
【问题讨论】:
-
你有任何初始化器可以对你的模型做任何事情吗?
-
这是什么意思?我不这么认为
-
听起来您的应用程序初始化中的某些内容正在尝试使用您的
Report类。该 SQL 是 ActiveRecord 的 PostgreSQL 适配器用来计算表结构的,错误表明您的数据库中没有reports。当您rake db:migrate时,您会遇到同样的问题;因此,您的应用程序初始化可能有问题,因为这发生在 之前db:migrate做任何有用的事情。你用的是什么插件?config/initializers有什么东西吗? -
感谢您的回答。这是一个有趣的想法。我在配置/初始化程序中有一些东西。我应该查找引用 Report 类的文件吗?
-
很难说,对报告的引用可能隐藏在搜索后面。我以前见过 ActiveAdmin 涉及到此类问题,但我不使用它,所以这只是胡乱猜测。
标签: ruby-on-rails ruby-on-rails-3 postgresql rails-postgresql