BEGIN och END är reserverade ord i Oracle och SQL Server, men inte säker på varför MySQL betraktar dem inte som sådana .
Den PGError verkar dock indikera att själva databasmotorn (och inte någon Ruby-relaterad körning) verkligen har avvisat frågan på grund av "slutet".
Reserverade ord (och namn som innehåller mellanslag) kan användas om de citeras - Active Record kanske inte citerade identifierarna i SQL som genererades.
Jag skulle titta på loggen i MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) och se de påståenden som genererades.
Och eftersom PGError betyder PostGreSQL och du nämnde Heroku (PostgreSQL 8.3) - jag tror att detta beror på att END verkligen är ett reserverat ord i PostgreSQL:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end