SQL create table命令中的语法错误

时间:2016-01-21 11:22:40

标签: php mysql sql mysqli

我的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))

6 个答案:

答案 0 :(得分:4)

asdivdate是sql保留字(请参阅manual),如果不使用反引号转义,就不能拥有此类名称。

答案 1 :(得分:2)

其中一列名为AS,这是一个保留字。要么使用不同的名称,要么使用``like as varchar(50)

答案 2 :(得分:1)

1)Div and AS mysql reserved key必须是反引号

2)重复列bbmx_2_5bbav_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))

答案 3 :(得分:0)

您的一个专栏asreserved keyword

答案 4 :(得分:0)

很多问题:

  • DATE和DIV是keywords;使用divdate使用反引号`。
  • hs VARCHAR(50),保留关键字之后,不允许
  • 列名称AS
  • 重复列bbmx_2_5bbav_2_5

答案 5 :(得分:0)

MySQL有一些关键字reserved

我们不能将它们用作数据库/表/字段名称。

有两种方法可以解决这个问题:

1)添加反引号。

2)预先填写父母姓名。

e.g。 databasename.tablename

OR

table.fieldName

但是,最好的方法是避免使用保留关键字。

如果您的字段名称为div,则可以将其重命名为division,如果

您的字段名称为date,您可以将其重命名为created_date