On Tuesday, August 23, 2016 at 6:42:07 AM UTC-7, Tim Sheng wrote:
>
> #!/usr/bin/env ruby
> require 'rubygems'
> require 'mysql'
> require 'net/ssh/gateway'
> require 'sequel'
>
>
> HOST      = '54.222.195.145'
> SSH_USER  = 'admin'
> DB_HOST   = "stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn"
>
>
>
>
> gateway = Net::SSH::Gateway.new(HOST, SSH_USER, :keys => [ 
> "~/.ssh/infra_stage-id_rsa" ],)
> port = gateway.open(DB_HOST,3306,3306)
>
>
>   child = fork do
>     db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port => 
> port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database => 
> 'wechat_db')
>     puts db['select id from lead'].count
>   end
>   puts "child: #{child}"
> Process.wait
> gateway.close(port)
>
>
>
> I can set up a connection with mysql using the code above , and print the 
> number of `lead` table records. 
> when i use the following code directly
>     db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port => 
> port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database => 
> 'wechat_db')
>     puts db['select id from lead'].count
>
>
> the program is hanging up.
>
> is there a way to connect remote mysql using sequel via ssh without fork a 
> child process, because i want to retrieve `db` object, so i can continue to 
> do it using this object,
> but now the fork block only seems to return a `child` process number.
>
> i can realise the same feature with mysql2, but the api for sequel seems 
> to be more elegant.  i want to use sequel gem.
>
>
> require 'rubygems'
> require 'mysql2'
> require 'net/ssh/gateway'
>
>
> ssh_gate = Net::SSH::Gateway.new(
>   '54.222.195.145',
>   'admin',
>   :keys => [ "~/.ssh/infra_stage-id_rsa" ],
>  )
>
>
> puts 'true' if ssh_gate.active?
>
>
> ssh_gate.open('stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn
> ', 3306, 3306)
>
>
> client = Mysql2::Client.new(
>   host: "127.0.0.1",
>   username: 'root',
>   password: 'tMq2OhtrF3afh1FL',
>   database: 'wechat_db',
>   port: 3306
> )
> results = client.query("SELECT * FROM lead")
> results.each do |row|
>   p row
> end
> client.close
>
>
> Thanks
> Tim
>

My first thought would be to change from :adapter=>'mysql' to 
:adapter=>'mysql2' in the Sequel code.  Hopefully that by itself should fix 
things.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to