Estoy generando tablas a partir de clases en .NET y un problema es que una clase puede tener un nombre de campo key
que es una palabra clave reservada de MySQL. ¿Cómo escapo en una declaración de creación de tabla? (Nota: El otro problema a continuación es que el texto debe ser de un tamaño fijo para ser indexado / único)
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;
Debe usar el carácter de retroceso (`), por ejemplo:
fuente
Si está interesado en la portabilidad entre diferentes servidores SQL, debe usar consultas ANSI SQL. El escape de cadenas en ANSI SQL se realiza mediante comillas dobles ("). Desafortunadamente, este método de escape no es portátil para MySQL, a menos que esté configurado en modo de compatibilidad ANSI.
Personalmente, siempre inicio mi servidor MySQL con el argumento --sql-mode = 'ANSI' ya que esto permite ambos métodos para escapar. Si está escribiendo consultas que se ejecutarán en un servidor MySQL que no fue configurado / está controlado por usted, esto es lo que puede hacer:
Adjúntelos en las siguientes consultas específicas de MySQL:
De esta manera, las únicas consultas específicas de MySQL están al principio y al final de su script .sql. Si desea enviarlos a un servidor diferente, simplemente elimine estas 3 consultas y estará listo. Aún más convenientemente podría crear un script llamado: script_mysql.sql que contendría las consultas de configuración de modo anteriores, generar un script script_ansi.sql y restablecer el modo.
fuente