Ruby on rails 3.2 ActiveRecord::StatementInvalid:PG::UndefinedTable:ERROR:relation";诺蒂西亚“;不存在,但表存在
出现以下错误:Ruby on rails 3.2 ActiveRecord::StatementInvalid:PG::UndefinedTable:ERROR:relation";诺蒂西亚“;不存在,但表存在,ruby-on-rails-3.2,postgresql-9.3,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
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
从pg_转储备份加载数据时无错误。通过添加加载时,通过CSV加载也不会出错。但如果我先删除现有的集合
Notizia.delete_all
我们得到的错误如上所述,具体操作如下:
LINE 1: DELETE FROM "notizia"
^
: DELETE FROM "notizia"
让我感到困惑的是,当查询位于单个表上时,为什么声明关系不存在。那是从哪里来的
上下文:将rails2站点迁移到rails3。在44款车型中,这是唯一一款挂断的。朋友,我在这里遇到了同样的问题 在我的例子中,出现这个问题是因为我的项目中gem“rake”的不兼容性
$ gem list | grep rake
rake (0.9.6, 0.9.2.2)
我使用了两个版本的gem,正如你在上面看到的,我的项目需要0.9.2.2版本
我在使用rspec运行测试时遇到了这个问题,因此我使用以下方法修复了这个问题:
bundle exec rspec spec/
但是,如果您的案例没有时间运行测试,请尝试使用“bundle exec”命令运行它,例如:
bundle exec rails console
或者
我用这个解决了我的问题。嗯,
notizia
与notizia
不同。Rails对单数名和复数名的令人沮丧的要求让你感到厌烦。哎哟。但是,对于create_表迁移,我的语法还可以。该表在postgresql中已正确命名。。。因此,存在一个转换问题。rails2版本中没有出现这种情况。所以拐点一定发生了变化。最糟糕的是,我从不喜欢rails覆盖(也不喜欢使用拐点.rb),所以我使用中性的Nomenklatara来避免它们。很明显,我已经进入了熊陷阱。除非有更好的建议,否则我会给它们一个不同的名称并相应地编辑转储文件。是的,我恐怕在这方面帮不了你。Rails/ActiveRecord方面是我试图远离的东西,我不喜欢看不见的魔法,它只是起作用(除非它不起作用,否则你就不能调试它来挽救你的生命)。不碍事的问题。我确实看到了单数和复数命名约定的逻辑。不能把英语的问题推到rails的肩上!但是,是的,有些东西可能是公开的,或者是简单的规则,比如只是一个额外的s(哪里,哦,诺蒂西亚哪里会绊倒我?)。别再唠叨了。。。向前的!
bundle exec rails console
bundle exec "your task"