PGError:错误:关系列不存在

Posted

技术标签:

【中文标题】PGError:错误:关系列不存在【英文标题】:PGError: Error: column of relation does not exist 【发布时间】:2012-12-20 18:53:23 【问题描述】:

我正在尝试将列“isGroup”的值更改为值“public”。

我创建了一个迁移:

Post.connection.execute("update Posts set isgroup='public'")

但是,我收到以下错误:

PGError: ERROR:  column "isgroup" of relation "posts" does not exist

不幸的是,我在 connection.execute 迁移的同时运行了创建迁移的列。但是,Heroku 上确实存在“isGroup”列,所以奇怪的是该列没有显示为出现。

有什么建议吗?

【问题讨论】:

你做了heroku run rake db:migrate吗? 是的,错误是我在运行该命令时得到的... 【参考方案1】:

如果您确定 isGroup 列存在,那么您应该像这样引用它:

UPDATE posts SET "isGroup" = 'public'

请注意,默认情况下 PostgreSQL 会将所有未加引号的命名为小写。

为避免这种混淆和引用的必要性,您可能希望使用 ALTER TABLE ... RENAME COLUMN ...isGroup 重命名为 isgroup

【讨论】:

不确定我是否理解...所以命令看起来像这样? Post.connection.execute("UPDATE posts SET "isGroup" = 'public'") 引号导致语法错误,意外 tIDENTIFIER,期待 ')' 另外,该列肯定存在,因为我可以更改 rails_admin 中的单个值...而且,我可以运行其他列更改...呃 如果SELECT * FROM posts LIMIT 1 显示isGroup 列,那么它肯定存在。在这种情况下,您必须使用 ...execute("UPDATE posts SET \"isGroup\" = 'public'") 之类的引用,或者将列重命名为 isgroup 很高兴它对您有所帮助。它只是表明,在 Postgres 下,您应该始终对表和列使用小写名称 - 否则您会得到像这样的令人讨厌的惊喜 谢谢!通过将所有列设为小写来解决

以上是关于PGError:错误:关系列不存在的主要内容,如果未能解决你的问题,请参考以下文章

导轨 3.1。 Heroku PGError:运算符不存在:字符变化=整数

错误:“行/列不存在数据”使用 OdbcDataReader

SQL查询列不存在错误

选择多列时出现 ExecuteReader 错误“行/列不存在数据”

Django 迁移错误:列不存在

列不存在服务器错误 - 但 sql 服务器管理说它存在