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

chucai · 2012年06月05日 · 最后由 chucai 回复于 2012年06月06日 · 2440 次阅读

问题描述: 我将 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 必不可少

需要 登录 后方可回复, 如果你还没有账号请 注册新账号