Detta beteende kan orsakas av anslutningsegenskap
allowMultiQueries=true . Min gissning är att den här egenskapen kommer att få MySQL att bryta upp frågor på ; som en frågeavgränsare och kör sedan dem som separata frågor, vilket i huvudsak bryter koden för att skapa utlösare.
Som du sa i ett - nu borttaget - svar att lägga till allowMultiQueries=true faktiskt löste problemet (i motsats till vad jag förväntade mig), problemet kan faktiskt vara den sista ; i din fråga. Så en annan sak att kontrollera är om problemet försvinner genom att ta bort den sista ; (i END; ) i ditt skript (och inte med allowMultiQueries=true ). Vissa databaser tar inte hänsyn till ; att vara giltig i slutet av ett påstående (eftersom det faktiskt är en avgränsare för separata påståenden).
(det här svaret är baserat på min kommentar ovan)