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.