Время от времени я получаю ошибку mysql. ОшибкаПочему тупик mysql здесь?
Deadlock found when trying to get lock; try restarting transaction
запрос
var res = cn.Execute("insert ignore into
Post(desc, item_id, user, flags)
select @desc, @itemid, @userid, 0",
new { desc, itemid, userid });
Как на земле может этот запрос причиной этого? Когда googling я видел что-то о том, как запросы, которые занимают длинные строки блокировки и вызывают эту проблему, но для этой вставки не нужно прикасаться ни одной строки.
Вы используете myisam или innodb? Кроме того, вам нужно знать, что было выполнено ранее. AFAIK тупик никогда не приходит из одного запроса. – Sebas
Есть ли у вас какие-либо другие запросы в одном соединении? –
@Sebas: Я не уверен, у меня есть 4 экземпляра. Это линия, которая имела проблему. Даже если другие строки были заблокированы, я не знаю, как это произойдет. Я подозреваю, что другой клиент сделал то же самое, что и я начал их в одно и то же время, и каждое состояние длилось несколько минут. – 2013-02-16 19:17:46