【发布时间】:2010-01-24 17:08:55
【问题描述】:
我有一个在 heroku 上运行的免费小应用程序。
应用程序间歇性地停止工作并在屏幕上显示默认的 Heroku 错误页面。当我检查日志时,我看到以下内容:
ActiveRecord::StatementInvalid (PGError:错误:当前事务 被中止,命令被忽略直到结束 事务块:SELECT * FROM "用户" WHERE ("用户"."密码" = E'' AND "users"."userid" = E'') LIMIT 1): app/models/user.rb:5:in
authenticate'login'
app/controllers/admin_controller.rb:6:in
在我的控制器中,我只是在执行以下操作:
user = User.authenticate(params[:storeid], params[:password])
在用户模型中:
def self.authenticate(userid, password)
user = self.find_by_userid_and_password(userid, password)
user
end
错误消息使我相信某些连接处于挂起状态并且从未关闭。 ruby 应用程序中是否出现过这种情况?
在我的应用程序中,我也有很多地方使用 find_by_sql。这是否需要我们明确关闭连接?
像这样:
@sqlstmmt1 = "INSERT INTO addresses (\"line1\", \"line2\", city, state, zip, county) VALUES ('" + params[:line1] + "', '"+ params[:line2] + "', '"+params[:city]+ "', '" + params[:state] + "', '" + params[:zip]+ "', '" + params[:county]+"')"
sql = ActiveRecord::Base.connection();
sql.begin_db_transaction
【问题讨论】:
标签: ruby-on-rails