BEGIN और END Oracle और SQL सर्वर में आरक्षित शब्द हैं, लेकिन यह निश्चित नहीं है कि क्यों MySQL उन्हें ऐसा नहीं मानता ।
हालांकि ऐसा प्रतीत होता है कि PGError यह इंगित करता है कि डेटाबेस इंजन (और कोई रूबी-संबंधित रनटाइम नहीं) ने वास्तव में "अंत" के कारण क्वेरी को अस्वीकार कर दिया है।
यदि उद्धृत किया गया हो तो आरक्षित शब्दों (और रिक्त स्थान वाले नाम) का उपयोग किया जा सकता है - शायद सक्रिय रिकॉर्ड ने SQL में पहचानकर्ताओं को उद्धृत नहीं किया था जो उत्पन्न हुआ था।
मैं MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) में लॉग को देखूंगा और जेनरेट किए गए स्टेटमेंट देखूंगा।
और चूंकि PGError का अर्थ है PostGreSQL और आपने Heroku (PostgreSQL 8.3) का उल्लेख किया है - मुझे लगता है कि ऐसा इसलिए है क्योंकि END वास्तव में PostgreSQL में एक आरक्षित शब्द है:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end