Проект Codeigniter 2.1.Ошибка Дублирующая запись '' для ключа 'PRIMARY' - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в Codeigniter Framework.Я настроил существующие проекты Codeigniter v2 от github, и последние пару дней у меня были проблемы с файлом session.php.Все значения в переменных сеанса являются пустыми, и я получаю следующую ошибку

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();
    }

Кто-нибудь, кто был в состоянии устранить такую ​​ошибку?Спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Добавить столбец id в качестве первичного ключа и сделать его автоматическим приращением.

0 голосов
/ 20 сентября 2018

Ваш столбец session_id является первичным ключом вашей таблицы, и вы вставили пустое значение в него один раз, поэтому во второй раз он запретил вам, потому что первичный ключ должен быть уникальным.

  • , поэтому вы должны добавить id столбец в таблицу stream_ci_sessions, а затем сделать его primary key и auto increment.

  • Вы можете добавить id и сделать егокак primary key и auto increment с самого начала, но сначала вы должны усечь свои данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...