Generuję tabele z klas w .NET i jednym problemem jest to, że klasa może mieć nazwę pola, key
która jest zastrzeżonym słowem kluczowym MySQL. Jak uciec od tego w instrukcji tworzenia tabeli? (Uwaga: innym problemem poniżej jest to, że tekst musi mieć stały rozmiar, aby był indeksowany / unikalny)
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;
Powinieneś użyć znaku odwrotnego zaznaczenia (`), np .:
źródło
Jeśli interesuje Cię przenośność między różnymi serwerami SQL, powinieneś użyć zapytań ANSI SQL. Unikanie znaków ucieczki w ANSI SQL odbywa się za pomocą podwójnych cudzysłowów ("). Niestety, ta metoda ucieczki nie jest przenoszona do MySQL, chyba że jest ustawiona w trybie zgodności ANSI.
Osobiście zawsze uruchamiam mój serwer MySQL z argumentem --sql-mode = 'ANSI', ponieważ pozwala to na obie metody ucieczki. Jeśli piszesz zapytania, które mają być wykonywane na serwerze MySQL, który nie został skonfigurowany / jest przez Ciebie kontrolowany, oto co możesz zrobić:
Uwzględnij je w następujących zapytaniach specyficznych dla MySQL:
W ten sposób jedyne zapytania specyficzne dla MySQL znajdują się na początku i na końcu twojego skryptu .sql. Jeśli chcesz wysłać je na inny serwer, po prostu usuń te 3 zapytania i gotowe. Jeszcze wygodniej można by stworzyć skrypt o nazwie: script_mysql.sql, który zawierałby powyższe zapytania o ustawienie trybu, zresetować skrypt i zresetować tryb script_ansi.sql.
źródło