Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser 'end' comme nom de colonne dans Ruby on Rails (MySQL)

BEGIN et END sont des mots réservés dans Oracle et SQL Server, mais vous ne savez pas pourquoi MySQL ne les considère pas comme tels .

Cependant, cette PGError semblerait indiquer que le moteur de base de données lui-même (et non tout environnement d'exécution lié à Ruby) a effectivement rejeté la requête en raison de la "fin".

Les mots réservés (et les noms contenant des espaces) peuvent être utilisés s'ils sont cités - peut-être qu'Active Record n'a pas cité les identifiants dans le SQL qui a été généré.

Je regarderais le journal dans MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) et verrais les instructions générées.

Et puisque PGError signifie PostGreSQL et que vous avez mentionné Heroku (PostgreSQL 8.3) - je pense que c'est parce que END est en effet un mot réservé dans PostgreSQL :http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html

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