dpi*_*eri 4 sqlite postgresql ruby-on-rails heroku
这页我一直在开发我的应用程序已在本地工作的罚款(使用sqllite3),但是当我把它推到Heroku的,它使用PostgreSQL的我得到这个错误:
NeighborhoodsController#(ActionView :: Template :: Error)"PGError:ERROR:column \"isupforconsideration \"不存在\nLINE 1:... \"photos \"WHERE(neighborhood = 52 AND isUpForCon ... \n
从这行代码:
@photos = Photo.where(["neighborhood = ? AND isUpForConsideration = ?", @neighborhood.id, 1])
Run Code Online (Sandbox Code Playgroud)
isUpForConsideration是Photo专栏的一部分.我的所有迁移都是最新的,当我在本地拉回数据库时,isUpForConsideration仍然存在,并且应用程序仍可在本地运行.
我也尝试过:
@photos = @neighborhood.photos(:conditions => {:isUpForConsideration => 1})
Run Code Online (Sandbox Code Playgroud)
和
@photos = @neighborhood.photos.where(["isUpForConsideration = 1"])
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
NeighborhoodsController#(ActionView :: Template :: Error)"PGError:ERROR:column \"isupforconsideration \"不存在\nLINE 1:... tos \"WHERE(\"photos \".neighborhood = 52)AND(isUpForCon ... \n
知道我可能做错了吗?
Con*_*ler 18
您的问题是PostgreSQL中的表和列名称区分大小写.这通常是通过在进行查询时自动将这些转换为全小写来隐藏的(因此,为什么您会看到报告"isupforconsideration"的错误消息),但是如果您设法在创建时避免转换(通过双引号,就像Rails那样)当你创建一个表格时,你会看到这种古怪.在WHERE子句中使用它时,您需要在双引号中包含"isUpForConsideration"来修复此问题.
例如
@photos = @neighborhood.photos.where(["\"isUpForConsideration\" = 1"])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2771 次 |
最近记录: |