По долгу службы пришлось мне отправиться в длительную поездку. Компьютер с собой не возьмешь, и поэтому приспичило меня залить дамп базы Mysql на ноутбук с OpenSuSe 11.0. Dump отказался заливаться, ругнулся вот так:
ERROR 1221 (HY000) at line 3: Incorrect usage of UNION and INTO
Код хранимой функции был чистый, давным-давно вылизанный и ошибок в нем не было. Выяснилось, что на старых версиях mysql может не работать вот такая конструкция:
select 1 into @`avar` from (select 1 union select 1) `a`;
хотя сам запрос:
select 1 from (select 1 union select 1) `a`;
синтаксически правильный и имеет право на жизнь. Баг в конце концов поправили (подробности здесь), но в стандартных репозиториях OpenSuSe 11.0 (OSS, Non-OSS, Debug и Updates) версия mysql осталась старая, с багом.
Проблема лечится подключением репозитория MySQL и обновлением до последней версии сервера mysql.