studclub
(A)
September 16, 2012, 1:00pm
1
问题就是运行一段时间后,就出现要创建yiisession表,然后又存在这边,我必须清空sesion表就好了。就是session表结构出错还是什么问题。
CDbCommand failed to execute the SQL statement: SQLSTATE[42S01]: Base table or view already exists: 1050 Table ‘YiiSession’ already exists. The SQL statement executed was:
CREATE TABLE YiiSession
(
id CHAR(32) PRIMARY KEY,
expire INTEGER,
data TEXT
)
错误页面见附图,真心求帮助,网站挂了,真心不舒服,有损失阿,睹的慌。
yiqing95
(Yiqing 95)
September 17, 2012, 1:28am
3
autoCreateSessionTable => false
CDbHttpSession 的配置 试一下上面的 在初次创建后要把这个变量修改下 不然有可能再次创建session表
public function openSession($savePath,$sessionName)
{
if($this->autoCreateSessionTable)
{
$db=$this->getDbConnection();
$db->setActive(true);
try
{
$db->createCommand()->delete($this->sessionTableName,'expire<:expire',array(':expire'=>time()));
}
catch(Exception $e)
{
$this->createSessionTable($db,$this->sessionTableName);
}
}
return true;
}
应该是上面这段代码的结果
但是为什么会抛出异常 很诡异 有可能是服务器压力过大msyql链接数限制导致 只是猜测而已
studclub
(A)
September 17, 2012, 6:16am
4
yiqing95:
autoCreateSessionTable => false
CDbHttpSession 的配置 试一下上面的 在初次创建后要把这个变量修改下 不然有可能再次创建session表
public function openSession($savePath,$sessionName)
{
if($this->autoCreateSessionTable)
{
$db=$this->getDbConnection();
$db->setActive(true);
try
{
$db->createCommand()->delete($this->sessionTableName,'expire<:expire',array(':expire'=>time()));
}
catch(Exception $e)
{
$this->createSessionTable($db,$this->sessionTableName);
}
}
return true;
}
应该是上面这段代码的结果
但是为什么会抛出异常 很诡异 有可能是服务器压力过大msyql链接数限制导致 只是猜测而已
问题导致的就是mysql表结构出错了,可能yii查询不到这个数据,然后就认为没有这个表,然后就试图创建,,这里应该加一个修复功能的最好,或者首先检测是否存在表,然后修改,修复