Estou gerando tabelas de classes no .NET e um problema é que uma classe pode ter um nome de campo key
que é uma palavra-chave reservada do MySQL. Como escapar dele em uma instrução create table? (Nota: O outro problema abaixo é o texto deve ter um tamanho fixo para ser indexado / exclusivo)
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;
Você deve usar o caractere de retorno (`), por exemplo:
fonte
Se você estiver interessado em portabilidade entre diferentes servidores SQL, use consultas ANSI SQL. O escape de string no ANSI SQL é feito usando aspas duplas ("). Infelizmente, esse método de escape não é portátil para o MySQL, a menos que esteja definido no modo de compatibilidade com ANSI.
Pessoalmente, eu sempre inicio meu servidor MySQL com o argumento --sql-mode = 'ANSI', pois isso permite os dois métodos de escape. Se você estiver escrevendo consultas que serão executadas em um servidor MySQL que não foi configurado / é controlado por você, eis o que você pode fazer:
Coloque-os nas seguintes consultas específicas do MySQL:
Dessa forma, as únicas consultas específicas do MySQL estão no início e no final do seu script .sql. Se você deseja enviá-los para um servidor diferente, remova essas 3 consultas e está tudo pronto. De forma ainda mais conveniente, você pode criar um script chamado: script_mysql.sql que contenha as consultas de configuração do modo acima, origine um script script_ansi.sql e redefina o modo.
fonte