Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL语法创建表时出错_Mysql_Sql - Fatal编程技术网

Mysql SQL语法创建表时出错

Mysql SQL语法创建表时出错,mysql,sql,Mysql,Sql,我试图使用 ,这似乎很好,但当我再添加一个表时,它抱怨语法有错误 以下是命令 CREATE TABLE IF NOT EXISTS User( uid INT, name VARCHAR(64) UNIQUE, birthday date, PRIMARY KEY(uid) ) ENGINE = InnoDB ; CREATE TABLE IF NOT EXISTS UserEmail( uid INT,

我试图使用 ,这似乎很好,但当我再添加一个表时,它抱怨语法有错误

以下是命令

CREATE TABLE IF NOT EXISTS User(
        uid INT,
        name VARCHAR(64) UNIQUE,
        birthday date,
        PRIMARY KEY(uid)
) ENGINE = InnoDB ;

CREATE TABLE IF NOT EXISTS UserEmail(
        uid INT,
        email VARCHAR(64),
        PRIMARY KEY(uid, email),
        FOREIGN KEY(uid) REFERENCES User(uid)
);
但是,如果我想再添加一个表,它会说主键(uid)所在行的“')附近有语法错误

不确定哪里出错,因为新添加的命令中没有抱怨错误

--更新--

这已经解决了,但还有一个问题。 添加下表将抛出

无法创建表“estore.contains”(错误号:150)

--更新2--

我要添加的完整表

CREATE TABLE IF NOT EXISTS User(
        uid INT,
        name VARCHAR(64) UNIQUE,
        birthday date,
        PRIMARY KEY(uid)
) ENGINE = InnoDB ;

CREATE TABLE IF NOT EXISTS UserEmail(
        uid INT,
        email VARCHAR(64),
        PRIMARY KEY(uid, email),
        FOREIGN KEY(uid) REFERENCES User(uid)
);

CREATE TABLE friendship(
        invite_uid  INT,
        accept_uid  INT,
        start_date  DATE,
        PRIMARY KEY(invite_uid, accept_uid),
        FOREIGN KEY(invite_uid) REFERENCES User(uid),
        FOREIGN KEY(accept_uid) REFERENCES User(uid)
);  

CREATE TABLE Seller(
        sid INT,
        name VARCHAR(64),
        PRIMARY KEY(sid)
);

CREATE TABLE Product(
        pid INT,
        sid INT,
        name VARCHAR(64),
        description TEXT,
        price DOUBLE,
        PRIMARY KEY(pid),
        FOREIGN KEY(sid) REFERENCES Seller(sid)
);

CREATE TABLE buy(
        uid INT,
        pid INT,
        time DATE,
        PRIMARY KEY(uid, pid),
        FOREIGN KEY(uid) REFERENCES User(uid),
        FOREIGN KEY(pid) REFERENCES Product(pid)
);

CREATE TABLE Wishlist(
        uid INT,
        wid INT,
        start_time DATE,
        end_time DATE,
        PRIMARY KEY(uid,wid),
        FOREIGN KEY(uid) REFERENCES User(uid)
);

CREATE TABLE conntains(
        uid INT,
        wid INT,
        pid INT,
        PRIMARY KEY(uid, wid, pid),
        FOREIGN KEY(uid) REFERENCES User(uid),
        FOREIGN KEY(wid) REFERENCES Wishlist(wid),          
        FOREIGN KEY(pid) REFERENCES Product(pid)        
)ENGINE = InnoDB;

有人能帮忙吗?Thx删除
行尾

FOREIGN KEY(accept_uid) REFERENCES User(uid),
--------------------------------------------^

删除
行尾

FOREIGN KEY(accept_uid) REFERENCES User(uid),
--------------------------------------------^

检查代码的最后一行

FOREIGN KEY(accept_uid) REFERENCES User(uid),

删除末尾的逗号。

检查代码的最后一行

FOREIGN KEY(accept_uid) REFERENCES User(uid),

删除末尾的逗号。

第三个表上有一个额外的逗号

CREATE TABLE IF NOT EXISTS User(
        uid INT,
        name VARCHAR(64) UNIQUE,
        birthday date,
        PRIMARY KEY(uid)
) ENGINE = InnoDB ;

CREATE TABLE IF NOT EXISTS UserEmail(
        uid INT,
        email VARCHAR(64),
        PRIMARY KEY(uid, email),
        FOREIGN KEY(uid) REFERENCES User(uid)
);

CREATE TABLE friendship(
        invite_uid  INT,
        accept_uid  INT,
        start_date  DATE,
        PRIMARY KEY(invite_uid, accept_uid),
        FOREIGN KEY(invite_uid) REFERENCES User(uid),
        FOREIGN KEY(accept_uid) REFERENCES User(uid), <---- Extra comma
); 
如果用户不存在,则创建表(
uid INT,
名称VARCHAR(64)唯一,
生日,
主键(uid)
)引擎=InnoDB;
如果不存在,则创建表UserEmail(
uid INT,
电邮VARCHAR(64),
主键(uid、电子邮件),
外键(uid)引用用户(uid)
);
创建桌面友谊(
邀请,
接受uid INT,
开始日期,
主键(邀请uid、接受uid),
外键(invite_uid)引用用户(uid),

外键(accept_uid)引用用户(uid),第三个表上有一个额外的逗号

CREATE TABLE IF NOT EXISTS User(
        uid INT,
        name VARCHAR(64) UNIQUE,
        birthday date,
        PRIMARY KEY(uid)
) ENGINE = InnoDB ;

CREATE TABLE IF NOT EXISTS UserEmail(
        uid INT,
        email VARCHAR(64),
        PRIMARY KEY(uid, email),
        FOREIGN KEY(uid) REFERENCES User(uid)
);

CREATE TABLE friendship(
        invite_uid  INT,
        accept_uid  INT,
        start_date  DATE,
        PRIMARY KEY(invite_uid, accept_uid),
        FOREIGN KEY(invite_uid) REFERENCES User(uid),
        FOREIGN KEY(accept_uid) REFERENCES User(uid), <---- Extra comma
); 
如果用户不存在,则创建表(
uid INT,
名称VARCHAR(64)唯一,
生日,
主键(uid)
)引擎=InnoDB;
如果不存在,则创建表UserEmail(
uid INT,
电邮VARCHAR(64),
主键(uid、电子邮件),
外键(uid)引用用户(uid)
);
创建桌面友谊(
邀请,
接受uid INT,
开始日期,
主键(邀请uid、接受uid),
外键(invite_uid)引用用户(uid),

外键(接受uid)引用用户(uid),@Daniel,您不能为表使用名称CONTAINS,因为它是SQL关键字。请使用其他名称创建表。

@Daniel,您不能为表使用名称CONTAINS,因为它是SQL关键字。请使用其他名称创建表。

幸运的是,我解决了第二个问题,外键做得不对,我需要使用

        FOREIGN KEY(uid, wid) REFERENCES Wishlist(uid, wid),            

要在Wishlist中引用主键组合,幸运的是我解决了第二个问题,外键没有正确设置,我需要使用

        FOREIGN KEY(uid, wid) REFERENCES Wishlist(uid, wid),            
FOREIGN KEY(accept_uid) REFERENCES User(uid),<-- Comma should be removed

要在Wishlist中引用主键组合

不,我想这不是原因,将其更改为另一个名称并不能解决问题。我认为它与FK有关,但不确定具体如何Daniel,一个表只能使用一个主键。这应该会给您造成问题。但如果我必须使用组合主键,该怎么办更新我的问题以使上下文更清晰。正如您所看到的,引用的产品(wid)是其主键组合(wid,uid)的一部分不,我想这不是问题的原因,将其更改为另一个名称并不能解决问题。我认为这与FK有关,但不确定具体是什么原因Daniel,一个表只能使用一个主键。这应该会给您带来问题。但如果我必须使用组合主键,该怎么办?我已更新了我的问题,以使上下文更清晰。如您所知e、 引用的产品(wid)是其主键组合(wid,uid)的一部分。请为Wishlist和Product添加表结构。同时对所有表使用ENGINE=InnoDB,因为当表为非InnoDB时,不会创建外键(某些服务器使用默认的myisam引擎而不是innodb,并且使用myisam或不使用engine语句可能不会引发错误)请为Wishlist和Product添加表结构。另外,为所有表使用engine=innodb,因为当表为非innodb时,不会创建外键(某些服务器使用默认的myisam引擎而不是innodb,并且可能不会因使用myisam或未使用engine语句而引发错误)
FOREIGN KEY(accept_uid) REFERENCES User(uid),<-- Comma should be removed