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
ただし、REAL 接続値を入力してページをリロードすると、スクリプトが (何らかの理由で) 失敗し、HTTP 500 Internal Server Error
.
何が問題なのかまったくわかりません。ユーザー名とパスワードの組み合わせが間違っている限り、スクリプトは「機能」しますが、明らかに接続しませんが、適切な資格情報を与えるとすぐに失敗します。
何か案は?
irb
また、言及する価値があるのは、コマンドプロンプトで1行ずつ入力してこのスクリプトを実行すると、機能することです。eRubyだけの問題のようです。
要点: Fedora Core 7 上で動作する Apache 2.2.8 MySQL 5.0.* (gemmysql
バージョン 2.8.1) Ruby 1.9.2