自两年以来,我一直在运行以下代码,它基本上重复了一个空缺。因此,它将其行从数据库复制到临时表,在该表中,我将一些计数器放回0并将ID设置为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;
这段代码已经运行了两年多了。突然,它开始引发以下错误:
'vacancy_id'列不能为空
更新tmptable SET vacancy_id = NULL
我也很久没有接触过职位空缺表,尤其是vacancy_id(PK)自动递增。
我该如何调试此问题,为什么突然发生?我对下一步的工作有些困惑
编辑:设法通过在插入之前修改临时表来解决该问题,如本帖子MySQL: How to copy rows, but change a few fields?中所建议。还是想知道为什么突然出现此错误?