PGError:错误:关系列不存在

use*_*798 18 migration postgresql heroku ruby-on-rails-3

我正在尝试将列"isGroup"的值更改为值"public".

我创建了一个迁移:

Post.connection.execute("update Posts set isgroup='public'")
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

PGError: ERROR:  column "isgroup" of relation "posts" does not exist
Run Code Online (Sandbox Code Playgroud)

遗憾的是,我在与connection.execute迁移同时运行了创建迁移的列.但是,"isGroup"列确实存在于Heroku上,因此该列未显示为出现是奇怪的.

有什么建议?

mvp*_*mvp 31

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

UPDATE posts SET "isGroup" = 'public'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 很高兴它帮助了你.它只是表明在Postgres下你应该总是使用小写名称作为表和列 - 或者你可以得到像这样的令人讨厌的惊喜 (3认同)
  • 如果`SELECT*FROM posts LIMIT 1`显示`isGroup`列,那么肯定存在.在这种情况下,你必须使用引号,如`... execute("UPDATE posts SET \"isGroup \"='public'")`,或将列重命名为`isgroup` (2认同)
  • 谢谢!通过将所有列设为**小写**来解决 (2认同)