По принцип mysql се стреми към премахване на дългогодишната нестандартна употреба на функцията за стойности, за да разчисти пътя за някаква бъдеща работа, където стандартът на SQL позволява използването на ключова дума VALUES за нещо много различно и защото как функцията VALUES работи в подзаявки или не в клауза ON DUPLICATE KEY UPDATE може да бъде изненадващо.
Трябва да добавите псевдоним към клаузата VALUES и след това да използвате този псевдоним вместо нестандартната функция VALUES в клаузата ON DUPLICATE KEY UPDATE, напр. промяна
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
до
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
(Това работи само на mysql 8+, не и на по-стари версии или в която и да е версия на mariadb до поне 10.7.1)
От https://dev.mysql.com/worklog/task/?id=13325 :