Есть таблица MySQL с сессиями юзеров. Помимо прочего у каждой сессии есть имя пользователя, который её создал и дата истечения. Пользователи могут иметь несколько сессий одновременно, однако их количество ограничено, чтобы нельзя было забить БД постоянно заново авторизуясь. Допустим, количество сессий ограничено 4. В таком случае перед созданием новой сессии я должен оставить в базе не больше 3 сессий этого пользователя. Самое логичное - удалить самые старые сессии.
Я делаю это так:
mysql_conn.query("SET @tmp = (SELECT expire FROM sessions WHERE user_id = ? ORDER BY expire DESC LIMIT 3, 1); DELETE FROM sessions WHERE expire < (@tmp) AND user_id = ?;", [user_id, user_id], function (err, rows) {
...
});
И получаю ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM sessions WHERE expire < (@tmp) AND user_id = 'test'' at line 1
Если же тупо скопировать этот запрос в phpMyAdmin и запустить там, то он отлично отрабатывает. Я добавлял вызов console.log в саму библиотеку MySQL для NodeJS, чтобы она вывела запрос непосредственно после форматирования, копировал его, вставлял в phpMyAdmin и всё тоже срабатывало нормально.
В чём может быть дело?