これは5年前の "How to create a ssh tunnel in ruby and then connect to mysql server on the remote host"へのフォローアップの質問です。リモートMySQLサーバからRails Appへのデータの移動
RubyでSSHトンネルを作成してから、リモートのMySQLデータベースに接続しようとしています。私はアプリの古いバージョンからいくつかの古いデータを移動する必要があるので、私はこれをやっているので、私はActiveRecord、マイグレーションなどは必要ありません。
私はNetSSHGateway gemとMySQL2 gemを使用しています。
ここに私のRubyコード(レールコンソールで実行)です:最後の行の後
gateway = Net::SSH::Gateway.new('old_remote_server.com','server_username')
port = gateway.open('127.0.0.1', 3306, 3307)
client = Mysql2::Client.new(
host: "127.0.0.1",
username: 'database_username',
password: 'database_password',
database: 'database_name',
port: port
)
は、コンソールは約2分間ハングした後、私にエラーを与える:
Mysql2::Error: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
私はSSHをリモートサーバに接続して、そのような方法でMySQLコマンドを実行できるので、ここで何が問題になっているのか分かりません。
Sequel ORMを調べることをおすすめします。有用なORMであるだけでなく、あるDBMから別のDBMにデータを簡単に移行する機能もあります。 http://sequel.jeremyevans.net/rdoc/files/doc/bin_sequel_rdoc.html#label-Copy+Databasesを参照してください。 –