请求协助排查CREATE TABLE语句的SQL语法错误
解决MySQL CREATE TABLE的语法错误问题
我帮你排查了下这条CREATE TABLE语句,有几个明确的语法问题导致了ERROR 1064报错,咱们一个个说:
- 保留字冲突:
Case和Year都是MySQL的保留字,不能直接当列名用,得用反引号`把它们包起来。 - 拼写错误:
Block列的类型写成了VARRCHAR,正确拼写是VARCHAR。 - 重复列定义:你重复写了两次
District列的定义,这会让SQL解析器直接报错,得删掉其中一个(或者根据需求重命名其中一列)。 - 类型不匹配:
Block是VARCHAR类型,你给的默认值是数字0,最好改成字符串'0'避免类型冲突。
下面是修正后的完整语句:
CREATE TABLE crime1( ID INT NOT NULL AUTO_INCREMENT, `Case` VARCHAR(30) NOT NULL, Dated timestamp NOT NULL, Block VARCHAR(30) NOT NULL DEFAULT '0', Iucr VARCHAR(10), Prime CHAR(30) NOT NULL, Description VARCHAR(50) NOT NULL, Location VARCHAR(50) NOT NULL, Beat INT NOT NULL DEFAULT 0, District INT NOT NULL DEFAULT 0, Last_Updated timestamp, `Year` timestamp default now(), PRIMARY KEY (ID) );
如果你的District列确实需要两种不同的属性(比如一个非空有默认值,一个允许为空),那得给其中一列换个名字,比如District_Alt,不然重复定义列是绝对不允许的。
内容的提问来源于stack exchange,提问作者Ankit Tyagi
相关产品推荐
相关产品推荐

