在MYSQL中创建数据库会引发这种错误

时间:2016-05-23 07:33:15

标签: mysql syntax-error structure

set foreign_key_checks=0

CREATE TABLE product(
id INT(10)  NOT NULL AUTO_INCREMENT,
name varchar(100),
category_id INT,
PRIMARY KEY (id),
FOREIGN KEY (category_id) REFERENCES category (id) on update cascade on delete cascade);

CREATE TABLE customer(
id INT(10) NOT NULL AUTO_INCREMENT,
name varchar(50),
email varchar(100),
password varchar(25),
PRIMARY KEY (id));

CREATE TABLE purchase(
id INT NOT NULL AUTO_INCREMENT,
user_account_id INT(10),
product id INT(10),
PRIMARY KEY (id),
FOREIGN KEY (user_account_id) REFERENCES customer(id));


CREATE TABLE category(
id INT(10) NOT NULL AUTO_INCREMENT,
kategorija VARCHAR(50),
PRIMARY KEY (id));


CREATE TABLE purchase_item(
purchase_id INT(10),
product_id INT(10),
number_of_items INT(10),
total_price DECIMAL,
FOREIGN KEY (puchase_id) REFERENCES purchase(id),
FOREIGN KEY (product_id) REFERENCES product(id));

第一个错误
enter image description here

第二个错误
enter image description here

3 个答案:

答案 0 :(得分:0)

你的语法几乎是正确的。在每个表的创建中,您使用:

column_name INT(number), ...

这对于varchar数据类型是正确的,但对INT没有。 对于INT,您还必须使用方括号[] 。所以我提到的那条线将成为:

column_name INT[(10)], ...

如果您查看syntax documentation of the CREATE TABLE,可以在" data_type"部分找到它。

我希望我可以帮助你:)。

答案 1 :(得分:0)

主要错误归因于以下几行:

错误1

set foreign_key_checks=0

以上行错过语句终止符号分号(;)。

错误2

product id INT(10),

单词productid之间缺少下划线。 它应该是product_id

进行上述更改,您的sql脚本应该正常工作。

答案 2 :(得分:0)

主要错误归因于以下几行:

错误1:

设置foreign_key_checks = 0 上面的行错过语句终止符号分号(;)。

错误2:

产品ID INT(10), 单词product和id之间缺少下划线。 它应该是product_id。

进行上述更改,您的sql脚本应该正常工作。

谢谢你们的帮助!这是正确答案。