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