У меня есть скрипт ruby, который использует ActiveRecord (2.3.12) для доступа к базе данных MySQL. Процесс выглядит примерно так: «прочитать значения базы данных из файла конфигурации», «подключиться к базе данных», «создать таблицу A
, если она не существует», «загрузить и проанализировать файл», «сохранить проанализированные записи в A
».
Код выглядит следующим образом:
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:database => database_name,
:username => username,
:password => password,
:host => "localhost",
:port => 3306
)
...
ActiveRecord::Schema.define do
create_table a, :force => true do |t|
t.string :last_name, :limit => 60, :default => "", :null => false
t.string :first_name, :limit => 30, :default => "", :null => false
t.string :middle_initial, :limit => 2, :default => ""
t.string :dob, :limit => 12, :default => "", :null => false
end
end unless A.table_exists?
Однако, если я введу неверные учетные данные БД или несуществующее имя базы данных в метод establish_connection
, сценарий, похоже, не выдаст никаких ошибок или не выдаст никаких исключений, пока я действительно не попытаюсь выполнить какую-либо операцию над база данных (т. е. создать таблицу A
). Я пробовал begin-rescue-end
вокруг establish_connection
, но он никогда не входил в блок rescue
.
Почему establish_connection
кажется не совсем ... ну ... установить соединение? И за свою жизнь я не могу понять, что он вообще должен вернуть. Документы ЗДЕСЬ точно не помогут.
Или я что-то не так делаю? Пожалуйста, помогите!