BEGIN og END er reserverede ord i Oracle og SQL Server, men ikke sikker på hvorfor MySQL betragter dem ikke som sådan .
Denne PGError ser dog ud til at indikere, at selve databasemotoren (og ikke nogen Ruby-relateret runtime) faktisk har afvist forespørgslen på grund af "slutningen".
Reserverede ord (og navne, der indeholder mellemrum) kan bruges, hvis de er anført - måske citerede Active Record ikke identifikatorerne i den SQL, der blev genereret.
Jeg ville se på loggen i MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) og se de genererede udsagn.
Og da PGError betyder PostGreSQL, og du nævnte Heroku (PostgreSQL 8.3) - tror jeg, det skyldes, at END faktisk er et reserveret 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