【问题标题】:DatatypeMismatch: ERROR just on Postgres but works in SQLite3DatatypeMismatch:仅在 Postgres 上出现错误,但在 SQLite3 中有效
【发布时间】:2016-01-21 16:44:10
【问题描述】:

我遇到了这个令人沮丧的错误。请帮忙!它在 SQLite 中运行良好,但在 Postgres 中抛出此错误

ActiveRecord::StatementInvalid in JobSeekersController#export_single_record_csv PG::DatatypeMismatch: 错误:WHERE 的参数必须是布尔类型,而不是整数类型 LINE 1: SELECT "phones".* FROM "phones" WHERE (11) ORDER BY "phone ... ^ : SELECT "phones".* FROM "phones" WHERE (11) ORDER BY "phones"."id" ASC LIMIT 1

这是我在 job_seekers 控制器中的代码

def export_single_record_csv
email = Email.where("email_address = ?", session[:email_jobseeker])      
  @job_seeker = JobSeeker.where("id = ?", email[0].job_seeker_id)

  respond_to do |f|        
    f.csv { send_data @job_seeker.to_csv, filename: "job_seekers-#{Date.today}.csv" }
  end
end

这是我在 JobSeeker.rb 中的代码

 def self.to_csv
 CSV.generate(:converters => :all) do |csv|

  all.each do |job_seeker|

    data = Array.new
   phone = Phone.where("job_seeker_id = ?", job_seeker.id).first
    if !phone.mobile_number.blank?
      data.push(phone.mobile_number)
    else
      data.push('null')
    end

【问题讨论】:

  • 错误消息来自export_single_record_csv 操作。是你发的那个吗?
  • 在导出单个记录中的代码与导出 csv 中的代码完全相同

标签: ruby-on-rails postgresql


【解决方案1】:

您的参数或数据库架构中似乎存在某种数据类型不匹配。我会登录到您的数据库并描述 job_seekers 表以查看所有列是什么以及它们的类型,确保迁移时没有出错。

我还会仔细检查其中的 email[0].job_seeker_id 以及 session[:email_jobseeker]。

您能否在从 Postgres 获取数据时在控制台中运行这些查询? 将JobSeeker.where("id = ?", 1) 放入控制台会发生什么?

【讨论】:

  • 我刚刚重新启动了 droplet,现在相同的代码正在运行。感谢您的帮助
猜你喜欢
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 2015-08-31
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多