#mysql #database #mariadb #datagrip
#mysql #База данных #мариадб #datagrip
Вопрос:
Я пытаюсь реализовать процедуру в mysql с помощью datagrip, но я все еще получаю эту ошибку.
[42000][1064] У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с РЕКУРСИВНЫМИ потомками КАК (ВЫБЕРИТЕ e.activity, ПРИВЕДИТЕ (например,activity КАК CHAR(500)) КАК’ в строке 3
Я работаю на Windows
версия mysql 8.0.15 для Win64 на x86_64 (сервер сообщества MySQL — GPL) Версия сервера: 5.5.5-10.1.37-MariaDB mariadb.org бинарное распределение
CREATE DEFINER=`root`@`localhost` PROCEDURE `findPaths`()
BEGIN
WITH RECURSIVE descendants AS
(
SELECT e.activity, CAST(e.activity AS CHAR(500)) AS path, n.cost as total_cost
FROM edges e JOIN nodes n
ON e.activity=n.code
WHERE e.activity='A'
UNION ALL
SELECT e.activity, CONCAT(d.path, ',', e.activity), d.total_cost (SELECT cost FROM nodes WHERE code=e.activity)
FROM descendants d, edges e
WHERE e.parent=d.activity
)
SELECT * FROM descendants WHERE activity='M' OR activity='N' ORDER BY total_cost;
END
Я хочу, чтобы процедура была создана и доступна для запуска
Ответ №1:
Рекурсивный CTE, добавленный в MariaDB-10.2
Из вашей строки версии у вас есть MariaDB-10.1.37
Комментарии:
1. downloads.mariadb.org я полагаю, у него есть установщики. Не уверен, как она была установлена изначально.