Я генерирую таблицы от классов в.NET, и одной проблемой является класс, может иметь имя поля key
который является зарезервированным ключевым словом MySQL. Как я выхожу из него в создать операторе таблицы? (Отметьте: другой проблемой ниже является текст, должен быть фиксированный размер, чтобы быть индексируемым/уникальным),
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;
Вы можете использовать двойные кавычки, если включен режим ANSI SQL
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;
или проприетарный обратная галочка убегает в противном случае. (Где найти символ `
на различных раскладках клавиатуры, описано в этом ответе )
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;
(Источник: Справочное руководство по MySQL, 9.3 Зарезервированные слова )
Вы должны использовать символ обратного тика (`), например:
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;