【问题标题】:SQL Error with ruby红宝石的SQL错误
【发布时间】:2016-05-10 19:02:03
【问题描述】:
require 'mysql2'

SCHEDULER.every '2h', :first_in => 0 do |job|

  # MySQL connection
  db = Mysql2::Client.new(:host => "host", :username => "username", :password => "password", :port => port, :database => "database" ) 

  sql = "select count(*) from tickets where department_id = 6;"
  tickets_sql = db.query(sql)
  puts tickets_sql

  #Send Events
  send_event('tickets_sql',    {current: tickets_sql})


end

我正在使用puts 命令,所以我可以在我的日志文件中看到输出。此命令的输出是一条错误消息,即:#<Mysql2::Result:0x000000025546a8>

这个错误是什么意思?

我采用与代码中相同的查询并在数据库上运行它并按预期输出数字。

【问题讨论】:

    标签: mysql sql ruby dashing


    【解决方案1】:

    这不是错误消息,它是一个对象 (Mysql2::Result)。你可以给count(*)和别名(在它后面加上as smth)并以tickets_sql.first['smth']访问(你可以使用first,因为只有一行,否则你会得到一个集合,所以你应该用@遍历它987654327@,例如,用puts输出检索到的行。

    【讨论】:

    • 关于这个@notulysses 的另一个问题可以说它返回的数字是小数,有没有特殊的方法来处理它。 count(*) 似乎不适用于小数。
    • 我很抱歉含糊不清,它显示小数点,所以我使用 ticket_sql.first['smth'] 这在代码中返回 0.1942E2。当我在数据库中运行查询时.. 小数点应该显示为 19.42 你将如何将小数点放在右边两个位置?
    • @Johnathon22: 你可以在你的 sql 查询中去掉不必要的数字
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2017-05-26
    • 2016-02-18
    • 1970-01-01
    相关资源
    最近更新 更多