ruby-on-rails-3 – 错误:运算符不存在:字符变化=整数
发布时间:2020-12-16 20:12:08 所属栏目:百科 来源:网络整理
导读:我面临着共同的问题.我的Rails应用程序在我的本地机器上工作,但是在部署到heroku之后它崩溃了: % unless @user.hotels.empty? % % @user.hotels.each do |hotel| % %= "#{hotel.description} #{hotel.name} in #{hotel.city},#{hotel.country}" %br / % end
我面临着共同的问题.我的Rails应用程序在我的本地机器上工作,但是在部署到heroku之后它崩溃了:
<% unless @user.hotels.empty? %> <% @user.hotels.each do |hotel| %> <%= "#{hotel.description} #{hotel.name} in #{hotel.city},#{hotel.country}" %><br /> <% end %> <% end %> 这是从heroku日志: ActionView::Template::Error (PGError: ERROR: operator does not exist: character varying = integer LINE 1: SELECT "hotels".* FROM "hotels" WHERE ("hotels".user_id = 1) ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. : SELECT "hotels".* FROM "hotels" WHERE ("hotels".user_id = 1)): @ user.hotels.empty?创建错误.我知道,sqlite是相当原谅,但PostgreSQL不是.这是酒店型号的外键:user_id:integer Heroku说: Make sure the operator is adequate for the data type. ActiveRecord does this automatically when you use an interpolated condition form. Array conditions: :conditions => ['column1 = ? AND column2 = ?',value1,value2] Hash conditions: :conditions => { :column1 => value1,:column2 => value2 } 迁移如下所示: class CreateHotels < ActiveRecord::Migration def self.up create_table :hotels do |t| t.string :name t.string :vanity_url t.integer :user_id .... 解决方法
这通常发生在数据库中的外键不是整数时.
例如: LINE 1: SELECT "hotels".* FROM "hotels" WHERE ("hotels".user_id = 1) ^ 在这种情况下,PostgreSQL希望user_id是一个整数,但它几乎看起来像是告诉你它实际上是一个varchar. 我会尝试删除列并重新添加. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |