BEGIN und END sind reservierte Wörter in Oracle und SQL Server, aber nicht sicher, warum MySQL betrachtet sie nicht als solche .
Dieser PGError scheint jedoch darauf hinzudeuten, dass die Datenbank-Engine selbst (und nicht irgendeine Ruby-bezogene Laufzeit) die Abfrage tatsächlich wegen des "Endes" abgelehnt hat.
Reservierte Wörter (und Namen mit Leerzeichen) können verwendet werden, wenn sie in Anführungszeichen gesetzt werden - möglicherweise hat Active Record die Bezeichner in der generierten SQL nicht in Anführungszeichen gesetzt.
Ich würde mir das Protokoll in MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) ansehen und die generierten Anweisungen sehen.
Und da PGError PostGreSQL bedeutet und Sie Heroku (PostgreSQL 8.3) erwähnt haben, liegt das vermutlich daran, dass END tatsächlich ein reserviertes Wort in PostgreSQL ist:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end