Контекст: Я пишу простой динамический запрос в Ruby с использованием драгоценного камня mysql2
.Ruby и mysql2: Looping до тех пор, пока соединение не будет бесплатным
Попытка:
#!/usr/local/bin/ruby
require "mysql2"
puts "Please enter the title of this Report:"
title = gets.chomp
Mysql2::Client.default_query_options.merge!(:as => :array)
puts "Please enter the host, username, password and database in order:"
hst = gets.chomp
user = gets.chomp
pass = gets.chomp
db = gets.chomp
begin
mysql = Mysql2::Client.new(:host => hst, :username => user, :password => pass, :database => db)
rescue Mysql2::Error => e
puts e.errno
puts e.error
retry
puts "Error: please try again."
puts "Enter the host, username, password and database:"
hst = gets.chomp!
user = gets.chomp!
pass = gets.chomp!
db = gets.chomp!
end
puts "Successfully accessed #{db}!"
Примечание что:
rescue Mysql2::Error => e
puts e.errno
puts e.error
работы с mysql
жемчужину, но:
rescue Mysql2::StandardError => e
puts e.errno
puts e.error
делает не работу с mysql2
жемчужина.
Наконец, ошибка в терминале:
iMac:workspace guy$ ruby File.rb
Please enter the title of this Report:
title
Please enter the host, username, password and database in order:
1.2.3.4
username15
password123
db_one
File.rb:19:in `rescue in <main>': uninitialized constant Mysql2::StandardError (NameError)
Did you mean? StandardError
from File.rb:17:in `<main>'
Редактировать после ответа: оставляя :host
, как :hst
дал мне следующую ошибку:
2002
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Сейчас я получаю сообщение об ошибке: 'Не удается подключиться к локальному серверу MySQL через гнездо«/tmp/mysql.sock»(2) 2002' снова и снова, не будучи в состоянии' Ctrl + C' , – EVAL
Это совершенно другая проблема. В принципе 'mysql2' не смог подключиться к серверу MySQL. И когда вы спасаете и повторяете, вы снова и снова видите ошибку. – Dharam
Я понял, что не смог подключиться. Я должен перефразировать: я хочу знать, почему я снова не смог выполнить следующий код: 'puts 'Error: попробуйте еще раз." puts "Введите хост, имя пользователя, пароль и базу данных:" hst = gets.chomp! пользователь = получает.chomp! pass = получает.chomp! db = gets.chomp! 'После' повторной попытки'. – EVAL