sql >> Database >  >> RDS >> Mysql

'end' gebruiken als kolomnaam in Ruby on Rails (MySQL)

BEGIN en END zijn gereserveerde woorden in Oracle en SQL Server, maar ik weet niet waarom MySQL beschouwt ze niet als zodanig .

Die PGError lijkt echter aan te geven dat de database-engine zelf (en niet een Ruby-gerelateerde runtime) de query inderdaad heeft afgewezen vanwege het "einde".

Gereserveerde woorden (en namen met spaties) kunnen worden gebruikt als ze worden geciteerd - misschien heeft Active Record de identifiers niet geciteerd in de SQL die is gegenereerd.

Ik zou de log in MySQL (http://dev.mysql.com/doc/refman/5.5/en/query-log.html) bekijken en de gegenereerde statements zien.

En aangezien de PGError PostGreSQL betekent en je Heroku (PostgreSQL 8.3) noemde - denk ik dat dit komt omdat END inderdaad een gereserveerd woord is in PostgreSQL:http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html

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



  1. Perl-verbinding pooling

  2. Kan MySql-query niet converteren met doctrine DQL of QueryBuilder

  3. Introductie van MariaDB Platform X5:de database voor elke workload, nu op elke schaal

  4. Is er een manier om updates/verwijderingen uit te schakelen, maar toch triggers toe te staan ​​om ze uit te voeren?