ActiveRecord :: StatementInvalid:PG :: UndefinedTable:ERROR:relation" notizia"不存在,但表存在

时间:2014-08-13 17:20:27

标签: ruby-on-rails-3.2 postgresql-9.3

以下错误:

Notizia.count
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "notizia" does not exist
LINE 5:              WHERE a.attrelid = '"notizia"'::regclass
                                        ^
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"notizia"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
尝试访问表数据时生成

psql命令\dt确实显示了

 public | notizias                      | table | me

存在。迁移顺利进行:

class CreateNotizias < ActiveRecord::Migration
  def self.up
    create_table :notizias do |t|
      t.date :data

[...]

==  CreateNotizias: migrating =================================================
-- create_table(:notizias)
   -> 0.0067s
-- add_index(:notizias, :data)
   -> 0.0028s
==  CreateNotizias: migrated (0.0097s) ========================================

从pg_dump备份加载数据传递没有错误。通过添加加载时,通过CSV加载也可以正常运行。但是如果我先删除现有的集合

Notizia.delete_all

我们通过指定的操作得到上述错误:

LINE 1: DELETE FROM "notizia"
                    ^
: DELETE FROM "notizia"

让我感到困惑的是,为什么当查询在一个表上时,它表明RELATION不存在。它来自哪里?

上下文:将rails2站点迁移到rails3。在44个型号中,这是唯一一个挂断的型号。

1 个答案:

答案 0 :(得分:0)

朋友,我在这里遇到同样的问题。

在我的情况下,出现这个问题是因为宝石&#34; rake&#34;在我的项目中。

$ gem list | grep rake 
rake (0.9.6, 0.9.2.2) 

我正在使用上面提到的两个版本的gem,我的项目需要版本0.9.2.2

我在使用rspec运行测试时遇到了这个问题,所以我用这个解决了这个问题:

bundle exec rspec spec/ 

但是如果您的案例不是时候运行测试,那么只需尝试使用&#34; bundle exec&#34;命令,例如:

bundle exec rails console

,或者

bundle exec "your task"

我用这个解决了我的问题。