#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
, проверьте имя пользователя, пароль, хост и порт!