Mysql se v zásadě snaží odstranit dlouhodobé nestandardní používání funkce values, aby se uvolnila cesta pro nějakou budoucí práci, kde standard SQL umožňuje použití klíčového slova VALUES pro něco velmi odlišného, a protože to, jak funkce VALUES funguje v dílčích dotazech či nikoli v klauzuli ON DUPLICATE KEY UPDATE může být překvapivé.
Musíte přidat alias do klauzule VALUES a pak použít tento alias místo nestandardní funkce VALUES v klauzuli ON DUPLICATE KEY UPDATE, např. změnit
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
do
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
(Toto funguje pouze na mysql 8+, ne na starších verzích nebo v jakékoli verzi mariadb alespoň od 10.7.1)
Z https://dev.mysql.com/worklog/task/?id=13325 :