2016-01-21 4 views
1

У меня есть синтаксическая ошибка в моей команде SQL create table, но не могу понять почему?Ошибка синтаксиса в команде SQL create table

CREATE TABLE E0 (
    div VARCHAR(50), 
    date VARCHAR(50), hometeam VARCHAR(50), awayteam VARCHAR(50), 
    fthg VARCHAR(50), ftag VARCHAR(50), ftr VARCHAR(50), 
    hthg VARCHAR(50), htag VARCHAR(50), htr VARCHAR(50), 
    referee VARCHAR(50), hs VARCHAR(50), 
    as VARCHAR(50), 
    hst VARCHAR(50), ast VARCHAR(50), hf VARCHAR(50), 
    af VARCHAR(50), hc VARCHAR(50), ac VARCHAR(50), 
    hy VARCHAR(50), ay VARCHAR(50), hr VARCHAR(50), 
    ar VARCHAR(50), b365h VARCHAR(50), b365d VARCHAR(50), 
    b365a VARCHAR(50), bwh VARCHAR(50), bwd VARCHAR(50), 
    bwa VARCHAR(50), iwh VARCHAR(50), iwd VARCHAR(50), 
    iwa VARCHAR(50), lbh VARCHAR(50), lbd VARCHAR(50), 
    lba VARCHAR(50), psh VARCHAR(50), psd VARCHAR(50), 
    psa VARCHAR(50), whh VARCHAR(50), whd VARCHAR(50), 
    wha VARCHAR(50), vch VARCHAR(50), vcd VARCHAR(50), 
    vca VARCHAR(50), bb1x2 VARCHAR(50), bbmxh VARCHAR(50), 
    bbavh VARCHAR(50), bbmxd VARCHAR(50), bbavd VARCHAR(50), bbmxa VARCHAR(50), bbava VARCHAR(50), bbou VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbah VARCHAR(50), bbahh VARCHAR(50), bbmxahh VARCHAR(50), bbavahh VARCHAR(50), bbmxaha VARCHAR(50), bbavaha VARCHAR(50)) 
+0

По крайней мере, в ANSI SQL 'date' является зарезервированным словом и его нужно разграничить как' "date" или в случае MySQL с использованием обратных тиков. – jarlh

ответ

4

as, div и date являются SQL зарезервированных слов (см manual), вы не можете иметь такие имена, не убегает с обратными кавычками.

+0

Спасибо вам за помощь :) –

+0

'date' - это не зарезервированное слово, это ключевое слово. –

2

Один из столбцов называется AS, которая является зарезервированным словом. Либо использовать другое имя или обернуть вокруг `` как as VARCHAR (50)

0

Лот вопросов:

  • DATE и DIV являются keywords; используйте div и date с обратными выводами `.
  • имя столбца AS не допускаются после того, как hs VARCHAR(50), зарезервировано ключевым словом
  • Повторяющиеся столбцы bbmx_2_5 и bbav_2_5
+0

дата не зарезервированное слово, это ключевое слово. –

1

1) Div and AS являются mysql reserved key он должен быть в кавычке

2) дубликатом колонке bbmx_2_5 и bbav_2_5 удалить

Всего запросов будет

CREATE TABLE E0 (`div` VARCHAR(50), date VARCHAR(50), hometeam VARCHAR(50), awayteam VARCHAR(50), fthg VARCHAR(50), ftag VARCHAR(50), ftr VARCHAR(50), hthg VARCHAR(50), htag VARCHAR(50), htr VARCHAR(50), referee VARCHAR(50), hs VARCHAR(50), `as` VARCHAR(50), hst VARCHAR(50), ast VARCHAR(50), hf VARCHAR(50), af VARCHAR(50), hc VARCHAR(50), ac VARCHAR(50), hy VARCHAR(50), ay VARCHAR(50), hr VARCHAR(50), ar VARCHAR(50), b365h VARCHAR(50), b365d VARCHAR(50), b365a VARCHAR(50), bwh VARCHAR(50), bwd VARCHAR(50), bwa VARCHAR(50), iwh VARCHAR(50), iwd VARCHAR(50), iwa VARCHAR(50), lbh VARCHAR(50), lbd VARCHAR(50), lba VARCHAR(50), psh VARCHAR(50), psd VARCHAR(50), psa VARCHAR(50), whh VARCHAR(50), whd VARCHAR(50), wha VARCHAR(50), vch VARCHAR(50), vcd VARCHAR(50), vca VARCHAR(50), bb1x2 VARCHAR(50), bbmxh VARCHAR(50), bbavh VARCHAR(50), bbmxd VARCHAR(50), bbavd VARCHAR(50), bbmxa VARCHAR(50), bbava VARCHAR(50), bbou VARCHAR(50), bbmx_2_5 VARCHAR(50), bbav_2_5 VARCHAR(50), bbah VARCHAR(50), bbahh VARCHAR(50), bbmxahh VARCHAR(50), bbavahh VARCHAR(50), bbmxaha VARCHAR(50), bbavaha VARCHAR(50)) 
0

У MySQL есть несколько ключевых слов reserved.

Мы не можем использовать их в качестве имени базы данных/таблицы/поля.

Есть два способа решить эту проблему:

1) Добавление обратного одиночных кавычек.

2) Предоставление родительского имени.

например. databasename.tablename

ИЛИ

table.fieldName 

Но лучший способ избежать использовать зарезервированные ключевые слова.

Если ваше имя поля div, вы можете переименовать его в division, если

ваше имя поля date, вы можете переименовать его в created_date.

Смежные вопросы