2016-02-05 3 views
1

Мне нужно руководство по чему-то, что меня смущает. У меня есть запрос на вставку mysql, который работает как 99% времени, но в некоторых случаях, поле автоматического увеличения увеличивается, но строка не вставлена. Запрос выглядит так:mysql insert auto increments, но не вставляет строку

$result = mysql_query("insert into receipts 
    values('','".$rcptno."','".$cid."','".$names."','".$stream."','".$pname."', 
    '".$fintot."','cr','".date('Y/m/d')."','".date('Ymd')."','1','".$username."','". 
    $sess."','".$refno."','".$prevbal."','".$newbal."')"); 

Когда я пытаюсь вставить одни и те же данные снова, он отлично вставляется. Я просто хотел бы знать, что может вызвать эту проблему.

Заранее спасибо.

+1

Это нормально. 'auto_increment' увеличивается, даже если фактическая запись не попадает на диск. Такое поведение должно быть таким, иначе MySQL не сможет гарантировать безопасный одновременный доступ. Если вы хотите знать, что пошло не так (обычно это тупик) - используйте «SHOW ENGINE INNODB STATUS» и прочитайте длинное сообщение, чтобы узнать, почему MySQL отказался записывать данные на диск. Когда это происходит, обычный подход заключается в повторной попытке транзакции. – Mjh

ответ

1

Идентификатор всегда увеличивается. Но в случае сбоя вставки из-за какого-либо триггера или транзакции откатывается назад, значение автоинкремента не используется повторно.

Смежные вопросы