MySQL名称为“范围”的问题

时间:2012-10-04 20:33:34

标签: mysql create-table

当我尝试运行此脚本时,我在“范围”处收到错误,如果我删除或更改名称,我可以运行脚本,但应用程序需要此列来存储数据。知道如何将其插入MySQL吗?

错误代码: 1064.您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在“范围”附近使用正确的语法CHAR(5)NOT NULL,range_max_value第22行的NUMERIC(18,3)'

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  "range"               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);

3 个答案:

答案 0 :(得分:5)

Range是一个保留关键字,需要使用反引号进行转义。

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  `range`               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);

答案 1 :(得分:3)

您应该查看reserved words列表。 范围就是其中一个词。你需要用刻度线来逃避它:

CREATE TABLE My_table (
  chart_id                INTEGER NOT NULL,
  u_range                 CHAR(5),
  l_range                 CHAR(5),
  `range`               CHAR(5) NOT NULL,
  range_max_val         NUMERIC(18,3),
  range_min_val         NUMERIC(18,3),
  PRIMARY KEY (chart_id)
);

答案 2 :(得分:1)