BEGIN và END là các từ dành riêng trong Oracle và SQL Server, nhưng không chắc tại sao MySQL không coi chúng là như vậy .
Tuy nhiên, PGError sẽ xuất hiện để chỉ ra rằng bản thân công cụ cơ sở dữ liệu (chứ không phải bất kỳ thời gian chạy nào liên quan đến Ruby) đã thực sự từ chối truy vấn vì "kết thúc".
Các từ dành riêng (và tên chứa khoảng trắng) có thể được sử dụng nếu được trích dẫn - có lẽ Active Record không trích dẫn các mã định danh trong SQL được tạo.
Tôi sẽ xem nhật ký trong MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) và xem các câu lệnh được tạo.
Và vì PGError có nghĩa là PostGreSQL và bạn đã đề cập đến Heroku (PostgreSQL 8.3) - tôi nghĩ điều này là do END thực sự là một từ dành riêng trong PostgreSQL:http://www.postgresql.org/docs/8.3/static/sql-keywords-appcharge.html
http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end