我正在尝试运行现有的Rails应用程序(从Github克隆),但是当我尝试db:migrate时,我收到以下错误。当我运行db:purge,db:schema:load等等时,我得到了同样的错误。
这是错误:
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation
"users" does not exist
LINE 8: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid,
a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull,
a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS
comment
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND
a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND
a.attcollation <> t.typcollation
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
答案 0 :(得分:1)
在克隆Rails项目并设置数据库时,您不想运行迁移。迁移旨在用于增量数据库更新,很可能它们变老了,不再运行。您希望运行rake db:schema:load
,它将db/schema.rb
文件直接加载到数据库中。
如果你想要一个运行种子的快捷方式,你可以使用rake db:setup
创建数据库(db:create
),加载模式(db:schema:load
),然后运行种子(db:seed
)。您也可以rake db:reset
做同样的事情但先丢弃数据库。
有关详情,请参阅有关此主题的Rails指南:http://guides.rubyonrails.org/active_record_migrations.html#what-are-schema-files-for-questionmark
通过重播整个迁移历史记录,无需(并且容易出错)部署应用程序的新实例。将数据库加载到当前模式的描述中要简单得多,速度更快。