Вступить в клуб →
лёгкаявопросSQL и проверка данных

Автотест берёт «последний заказ» запросом с LIMIT 1 и иногда падает

В автотесте после создания заказа через API проверка в базе делается так:

SELECT id, total FROM orders WHERE user_id = 42 LIMIT 1;

Подразумевается, что вернётся только что созданный заказ. У тестового пользователя 42 уже накопилось несколько сотен заказов. Тест падает примерно раз в десять прогонов.

В чём причина?

  • Дело в типе колонки total: округление даёт разные значения при сравнении
  • Нужен DISTINCT: без него запрос возвращает дубликаты строк
  • Без ORDER BY порядок строк не гарантирован, поэтому «первая» строка может оказаться любой
  • LIMIT 1 всегда отдаёт самую свежую строку, проблема в кэше соединения

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела