Проблема с подключением к MySQL с помощью eRuby

#mysql #ruby #linux #fedora #eruby

#mysql #ruby #linux #fedora #eruby

Вопрос:

У меня возникла проблема с подключением моих скриптов eRuby к моей базе данных MySQL.

Я написал короткий тестовый скрипт только для устранения ошибок при первоначальном подключении:

 <%

require 'mysql'

begin
     dbh = Mysql::new("localhost", "test", "wahssf", "amg")
rescue Mysql::Error => e
     print "Error code: #{e.errno}<br />"
     print "Error message: #{e.error}<br />"
     print "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
     dbh.close if dbh
end

%>
  

Теперь, пока я сохраняю параметры подключения в виде тарабарщины («test», «wahssf», «amg»), скрипт по умолчанию использует Mysql::Error класс и выводит следующее в браузер:

 Error code: 1045
Error message: Access denied for user 'test'@'localhost' (using password: YES)
Error SQLSTATE: 28000
  

Однако, как только я ввожу РЕАЛЬНЫЕ значения подключения и перезагружаю страницу, скрипт завершается с ошибкой (по какой-то причине?), и я получаю HTTP 500 Internal Server Error .

Я абсолютно понятия не имею, в чем проблема. Пока комбинация имени пользователя и пароля неправильная, скрипт «работает», но, очевидно, не подключается, но как только я даю ему надлежащие учетные данные, происходит сбой.

Есть идеи?

Также, что стоит упомянуть: когда я выполняю этот скрипт, вводя его построчно через irb в командной строке, он работает. Это только кажется проблемой в eRuby.

Основные характеристики: Apache 2.2.8 работает на Fedora Core 7 MySQL 5.0.* (gem mysql версии 2.8.1) Ruby 1.9.2

Комментарии:

1. Есть ли что-нибудь в журналах сервера? Вы также можете попробовать запустить этот код из командной строки и посмотреть, выводятся ли там какие-либо ошибки.

2. /ruby.rhtml:7:in 'close': wrong argument type Mysql (expected Struct) (TypeError) Я также попытался добавить метод query() в dbh, но была возвращена та же ошибка.

3. Что, если вы скажете dbh = Mysql.new вместо dbh = Mysql::new ?

4. В логах сообщается о той же ошибке, что и раньше. Почему он должен ожидать тип, ОТЛИЧНЫЙ от Mysql, для методов, которые являются частью класса Mysql? И на что ссылается type Struct? Я здесь в полной растерянности :

Ответ №1:

если сообщение есть Access denied , проверьте имя пользователя, пароль, хост и порт!