BEGIN en END zijn gereserveerde woorden in Oracle en SQL Server, maar ik weet niet waarom MySQL beschouwt ze niet als zodanig .
Die PGError lijkt echter aan te geven dat de database-engine zelf (en niet een Ruby-gerelateerde runtime) de query inderdaad heeft afgewezen vanwege het "einde".
Gereserveerde woorden (en namen met spaties) kunnen worden gebruikt als ze worden geciteerd - misschien heeft Active Record de identifiers niet geciteerd in de SQL die is gegenereerd.
Ik zou de log in MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) bekijken en de gegenereerde statements zien.
En aangezien de PGError PostGreSQL betekent en je Heroku (PostgreSQL 8.3) noemde - denk ik dat dit komt omdat END inderdaad een gereserveerd woord is in PostgreSQL:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end