|
阅读:6865回复:0
mysql 给字符列加外键报错
CREATE DATABASE box;
USE box; CREATE TABLE dep( depNo INT AUTO_INCREMENT NOT NULL UNIQUE, depName NVARCHAR(20) PRIMARY KEY, depUres NVARCHAR(20) NOT NULL, depNum INT, depText NVARCHAR(20) ); CREATE TABLE PerG( perNO INT AUTO_INCREMENT NOT NULL UNIQUE, perBumen NVARCHAR (20) REFERENCES dep(depName), perName NVARCHAR (20) NOT NULL, perId INT, perTel NVARCHAR(20), perQQ NVARCHAR(20), perEmail NVARCHAR(20), perGW NVARCHAR(20), CONSTRAINT FOREIGN KEY perBumen REFERENCES dep(depName) ) 如上代码,在执行时添加外键的地方,报如下的错误: 错误码: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES dep(depName) )' at line 10 因为dep报的外键是字符串类型,确定错误为是字符串列能否做外键. 查询后,并没有发现有说明,字符串列不能做外键的文章。 为了查找原因,将主键变为id, 在引用发现id也会报错。确认原因不是列的类型问题,而是添加外键的语法问题。 最后,专门查阅了语法。将如下代码进行修改就OK。 CONSTRAINT FOREIGN KEY (perBumen) REFERENCES dep(depName) 给外键列,加上括号后,就完美的解决了这个问题。原来是一个括号问题。!!! 所以,可以确定外键是可以为字符列的。 |
|
|