无法通过套接字连接到本地MySQL服务器。我想连接到REMOTE db

时间:2017-09-14 18:22:23

标签: ruby

这是我的代码。 我想连接到远程数据库

require 'bundler/setup' 
    #require "mysql"
    #require 'mysql2'
    #require "active_record"

Bundler.require



@db_host  = ENV["HOST"]
@db_user  = ENV["USER"]
@db_pass  = ENV['PASSWORD']
@db_name = "db_name"

require "active_record"

ActiveRecord::Base.establish_connection(
  :adapter  => 'mysql2',
  :database => @db_name,
  :username => @db_user,
  :password => @db_pass,
  :host     => @db_host)


class ConversionRate < ActiveRecord::Base
end

class ConversionRateMonthly < ActiveRecord::Base
    self.table_name = "conversion_rates_monthly"
end

class KdpReport < ActiveRecord::Base

end

class SalesCalculator 
    def run

        p KdpReport.count

    end 

end 

calculator = SalesCalculator.new
calculator.run

但是我收到了这个错误:

  

/home/jonsdirewolf/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/mysql2-0.4.9/lib/mysql2/client.rb:89:in`connect':无法通过套接字连接到本地MySQL服务器   '/var/run/mysqld/mysqld.sock'(2)(Mysql2 ::错误)

这很奇怪,但昨天我的代码工作了。可能有什么不对?我想连接到远程数据库,而不是本地。顺便说一句,我没有铁轨使用红宝石。

1 个答案:

答案 0 :(得分:1)

所以,问题出在空环境var ENV["HOST"]

当主机传递给ActiveRecordnil或equl为字符串localhost时 - AR将尝试使用套接字连接到db。