Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di 'end' come nome della colonna in Ruby on Rails (MySQL)

BEGIN e END sono parole riservate in Oracle e SQL Server, ma non sono sicuro del motivo per cui MySQL non li considera tali .

Tuttavia quel PGError sembrerebbe indicare che il motore di database stesso (e non qualsiasi runtime relativo a Ruby) ha effettivamente rifiutato la query a causa della "fine".

Le parole riservate (e i nomi contenenti spazi) possono essere utilizzate se citate - forse Active Record non ha citato gli identificatori nell'SQL che è stato generato.

Vorrei guardare il log in MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) e vedere le istruzioni generate.

E poiché PGError significa PostGreSQL e hai menzionato Heroku (PostgreSQL 8.3), penso che ciò sia dovuto al fatto che END è davvero una parola riservata in PostgreSQL:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendice.html

http://www.petefreitag.com/tools/sql_reserved_words_checker/?word=end