Я недавно перенес свой сайт на VPS.
При этом запрос, который работал на XAMPP, больше не работает на стороне Linux.
Первые 2 части запроса работают отлично, поэтому я вижу, что проблема связана с предложением WITH, которое я чувствую.
Таблицы в этой базе данных находятся в sql, сохраненном на
https://www.db -fiddle.com / ж / 718QhKmgPYALAS4Zg94cPx / 0
Я проверил это на XAMPP mysql, и это работает правильно.
Однако в Linux это не работает.
Я выполняю запрос
SET @DrawID := 3;
SELECT 120 into @MaxTicketNo FROM draw WHERE ID = @DrawID;
WITH RECURSIVE TicketNumbers (n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM TicketNumbers WHERE n < @MaxTicketNo) SELECT n FROM TicketNumbers WHERE n NOT IN (SELECT TicketNumber FROM transaction WHERE DrawID = @DrawID) ORDER BY RAND() LIMIT 1;
Я получаю это обратно при выполнении запроса
WITH RECURSIVE TicketNumbers (n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM TicketNumbers WHERE n < @MaxTicketNo)
SELECT n FROM TicketNumbers WHERE n NOT IN (SELECT TicketNumber FROM transaction WHERE DrawID = @DrawID)
ORDER BY RAND() LIMIT 1;
ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'RECURSIVE TicketNumbers (n) AS (ВЫБЕРИТЕ 1 СОЮЗ ВСЕ ВЫБРАТЬ n + 1 ОТ TicketNumbe' в строке 1
«