Yii - CDbHttpSession,登录前会话 table
Yii - CDbHttpSession, session table before login
我按照 this 教程创建我的用户在线列表。
在 Mac OSX 上的本地 MAMP 服务器中,它工作正常,但是如果我尝试放入 Ubuntu 服务器,我会收到此错误(在索引处,未登录):
Fatal error: Uncaught exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'session' already exists.
我可以捕捉到异常,但我想知道,因为在 OSX 中它工作正常但在 Ubuntu 中它不起作用。
我认为这可能是 Apache 或其他配置中的某些内容:可能吗?
会话是否在登录前创建?该组件在会话 table 中需要一个 user_id (非空),所以我认为有什么我不明白的。
在两个 php.ini 中我设置 session.auto_start = 0.
可能的问题是,在这两个服务器中你有细微的差别,其中 table 'session' 已经在 Ubuntu 服务器中可用,并且可能已被处理出于与您的需要完全不同的原因,而在您的 MAC 环境中,没有 'session' table.
这样的东西
我能想到的解决名称冲突的简单明了的方法是将您的 table 名称从 'session' 重命名为 'mysession' 以这种方式更改配置设置:
'session' => array (
'class' => 'application.components.DbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'mysession',
'userTableName' => 'user'
),
并更新代码中出现的每个 table 名称(如在查询中)。
这样碰撞应该消失,一切都应该正常工作。
希望对你有帮助。
我按照 this 教程创建我的用户在线列表。
在 Mac OSX 上的本地 MAMP 服务器中,它工作正常,但是如果我尝试放入 Ubuntu 服务器,我会收到此错误(在索引处,未登录):
Fatal error: Uncaught exception 'CDbException' with message 'CDbCommand failed to execute the SQL statement: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'session' already exists.
我可以捕捉到异常,但我想知道,因为在 OSX 中它工作正常但在 Ubuntu 中它不起作用。
我认为这可能是 Apache 或其他配置中的某些内容:可能吗?
会话是否在登录前创建?该组件在会话 table 中需要一个 user_id (非空),所以我认为有什么我不明白的。
在两个 php.ini 中我设置 session.auto_start = 0.
可能的问题是,在这两个服务器中你有细微的差别,其中 table 'session' 已经在 Ubuntu 服务器中可用,并且可能已被处理出于与您的需要完全不同的原因,而在您的 MAC 环境中,没有 'session' table.
这样的东西我能想到的解决名称冲突的简单明了的方法是将您的 table 名称从 'session' 重命名为 'mysession' 以这种方式更改配置设置:
'session' => array (
'class' => 'application.components.DbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'mysession',
'userTableName' => 'user'
),
并更新代码中出现的每个 table 名称(如在查询中)。 这样碰撞应该消失,一切都应该正常工作。 希望对你有帮助。