Więc w końcu się domyśliłem. Dzieje się tak, ponieważ rank
jest teraz zastrzeżonym słowem kluczowym w MySQL 8.x.x zgodnie z opisem tutaj .
Po zaktualizowaniu nazwy zmiennej zapytanie zaczęło działać.
Inna alternatywa jest użycie back-ticków, które moim zdaniem są bardziej odporne na przyszłość, ponieważ więcej słów kluczowych jest zarezerwowanych, zapobiegnie to niepotrzebnemu łamaniu SQL. Np. Poniższe działa dobrze na MySQL v8.x.x
Np.:
SELECT *, @rank := @rank + 1 AS `rank`
FROM q29wg_jreviews_comments ;