这是我的代码。 我想连接到远程数据库
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 ::错误)
这很奇怪,但昨天我的代码工作了。可能有什么不对?我想连接到远程数据库,而不是本地。顺便说一句,我没有铁轨使用红宝石。
答案 0 :(得分:1)
所以,问题出在空环境var ENV["HOST"]
。
当主机传递给ActiveRecord
为nil
或equl为字符串localhost
时 - AR将尝试使用套接字连接到db。