У меня возникла проблема с подключением сценариев eRuby к моей базе данных MySQL.
Я написал короткий тест script только для того, чтобы выработать исходные ошибки подключения:
<%
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" ), script по умолчанию относится к классу Mysql::Error
и печатает в браузере следующее:
Error code: 1045
Error message: Access denied for user 'test'@'localhost' (using password: YES)
Error SQLSTATE: 28000
Однако, как только я добавлю значения REAL и перезагрузите страницу, script завершится сбой (по какой-то причине?), и я получаю HTTP 500 Internal Server Error
.
Я не знаю, в чем проблема. Пока комбинация имени пользователя и пароля неверна, script "работает", но, очевидно, не подключается, но как только я даю ему правильные учетные данные, он терпит неудачу.
Любые идеи?
Кроме того, стоит упомянуть: когда я запускаю этот script, введя его в строке за строкой через irb
в командной строке, он работает. Это только кажется проблемой в eRuby.
Vitals:
Apache 2.2.8 работает на Fedora Core 7
MySQL 5.0. * (Gem mysql
версия 2.8.1)
Ruby 1.9.2
если сообщение Access denied
проверяет имя пользователя, пароль, хост и порт!
/ruby.rhtml:7:in 'close': wrong argument type Mysql (expected Struct) (TypeError)
Я также попытался добавить метод query () в dbh, с той же самой ошибкой, которая была возвращена.