我是Codeigniter框架的新手。我已经从github设置了Codeigniter v2现有项目,最近几天我对session.php文件遇到了问题。会话变量中的所有th值都为空,并且出现以下错误
A Database Error Occurred
Error Number: 1062
Duplicate entry '' for key 'PRIMARY'
INSERT INTO `stream_ci_sessions` (`session_id`, `ip_address`, `user_agent`, `last_activity`, `user_data`) VALUES ('', '', '', 1537445113, '')
Filename: libraries/Session.php
Line Number: 283
会话创建部分
function sess_create()
{
$sessid = '';
while (strlen($sessid) < 32)
{
$sessid .= mt_rand(0, mt_getrandmax());
}
// To make the session ID even more secure we'll combine it with the user's IP
$sessid .= $this->CI->input->ip_address();
$this->userdata = array(
'session_id' => md5(uniqid($sessid, TRUE)),
'ip_address' => $this->CI->input->ip_address(),
'user_agent' => substr($this->CI->input->user_agent(), 0, 120),
'last_activity' => $this->now,
'user_data' => ''
);
// Save the data to the DB if needed
if ($this->sess_use_database === TRUE)
{
$this->CI->db->query($this->CI->db->insert_string($this->sess_table_name, $this->userdata));
}
// Write the cookie
$this->_set_cookie();
}
有人能够解决这种错误吗?谢谢
答案 0 :(得分:0)
您的列session_id
是表的主键,您之前在其中插入了一个空值,因此第二次禁止您,因为主键必须是唯一的。
,因此您应该将id
列添加到stream_ci_sessions
表中,然后将其设置为primary key
和auto increment
。
您可以从一开始就添加id
并将其设置为primary key
和auto increment
,但是首先您应该截断数据。
答案 1 :(得分:0)
添加一个id
列作为主键,并使其自动递增。