Временная таблица начинает жаловаться, что идентификатор не может быть нулевым - PullRequest
0 голосов
/ 25 февраля 2019

У меня следующий код работает уже 2 года, он в основном дублирует вакансию.Таким образом, он копирует свою строку из базы данных во временную таблицу, где я помещаю некоторые счетчики обратно в 0 и помещаю идентификатор в NULL (потому что это автоинкремент).

Это код:

        $this->db->query('CREATE TEMPORARY TABLE tmptable SELECT * FROM vacancies WHERE vacancy_id = ' . $vacid);
        $this->db->query('UPDATE tmptable SET vacancy_id = NULL');
        if (!empty($banner)) {
            $this->db->query('UPDATE tmptable SET banner = "' . $banner . '"');
        }
        $this->db->query('UPDATE tmptable SET create_time = now()');
        $this->db->query('UPDATE tmptable SET watch_counter = 0');
        $this->db->query('UPDATE tmptable SET contact_info_counter = 0');
        $this->db->query('UPDATE tmptable SET status = 0');
        $this->db->query('UPDATE tmptable SET reminder_mail_sent = 0');
        $this->db->query('UPDATE tmptable SET extend_code = NULL');
        $this->db->query('INSERT INTO vacancies SELECT * FROM tmptable');
        $newvacancyid = $this->db->insert_id();
        $this->db->query('DROP TEMPORARY TABLE IF EXISTS tmptable');
        return $newvacancyid;

Этот код работает уже более 2 лет.И вдруг он начинает выдавать следующую ошибку:

Столбец 'vacancy_id' не может быть пустым

ОБНОВЛЕНИЕ tmptable SET vacancy_id = NULL

Iтакже давно не касались таблицы вакансий, и особенно это касается автоинкремента vacancy_id (PK).

Как мне отладить эту проблему, почему это происходит внезапно?Я немного застрял здесь, что делать дальше

РЕДАКТИРОВАТЬ: удалось решить эту проблему, изменив временную таблицу перед вставкой, как предлагается в этом посте MySQL: как копировать строки, но изменитьнесколько полей? .Хотелось бы еще узнать, почему вдруг появилась эта ошибка?

...