ActiveRecord :: StatementInvalid:PG :: UndefinedTable:ERROR:关系“users”不存在

时间:2017-11-16 00:32:40

标签: ruby-on-rails ruby activerecord

我正在尝试运行现有的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

1 个答案:

答案 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

  

通过重播整个迁移历史记录,无需(并且容易出错)部署应用程序的新实例。将数据库加载到当前模式的描述中要简单得多,速度更快。