2016-03-01 6 views
0

Контекст: Я пишу простой динамический запрос в 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) 

ответ

1

mysql2 камень определил Mysql2::Error, а не `mysql2 :: Стандартная ошибка.

Вы должны спасти Mysql2::Error

Обратитесь к mysql2 Github source для получения дополнительной информации.

+0

Сейчас я получаю сообщение об ошибке: 'Не удается подключиться к локальному серверу MySQL через гнездо«/tmp/mysql.sock»(2) 2002' снова и снова, не будучи в состоянии' Ctrl + C' , – EVAL

+1

Это совершенно другая проблема. В принципе 'mysql2' не смог подключиться к серверу MySQL. И когда вы спасаете и повторяете, вы снова и снова видите ошибку. – Dharam

+0

Я понял, что не смог подключиться. Я должен перефразировать: я хочу знать, почему я снова не смог выполнить следующий код: 'puts 'Error: попробуйте еще раз." puts "Введите хост, имя пользователя, пароль и базу данных:" hst = gets.chomp! пользователь = получает.chomp! pass = получает.chomp! db = gets.chomp! 'После' повторной попытки'. – EVAL

 Смежные вопросы

  • Нет связанных вопросов^_^