Rails Rails session 查询时抛出 mysql 的错误

chucai · June 05, 2012 · Last by chucai replied at June 06, 2012 · 2432 hits

问题描述: 我将 session 保存在数据库中,然后结果如下代码查询 session

ActiveRecord::SessionStore::SqlBypass.connection()
session = ActiveRecord::SessionStore::SqlBypass.find_by_session_id(session_id)  

代码运行报如下错误:

ActiveRecord::StatementInvalid (Mysql::Error: query: not connected: SELECT * FROM sessions WHERE session_id='9ba7d546733f6b50069d760a8e03829e')

刚刚开始是没有问题的,但是访问一两次后就会报上面的错误 谁遇到过类似的问题?

#1 楼 @huobazi 是啊,不过我觉得不应该是这个的问题。因为没有使用

ActiveRecord::SessionStore::SqlBypass.connection()
session = ActiveRecord::SessionStore::SqlBypass.find_by_session_id(session_id)  

的时候,整个程序是没有一点问题的。

#1 楼 @huobazi 只有在查询 session 的时候才会出现改问题

这个问题已经解决了,但不清楚引起的原因: 具体的代码如下

sid = params[:sid]
connection = ActiveRecord::Base.connection
sql = "select * from sessions where session_id = '#{sid}'"
record = connection.select_one(sql)
data = record["data"]
User.first
str = ActiveSupport::Base64.decode64 data
ss = Marshal.load(str)
@user = User.find_by_id(ss["warden.user.user.key"].last)

而且 User.first 必不可少

You need to Sign in before reply, if you don't have an account, please Sign up first.