2012-04-19 31 views
0

请帮助我。我收到以下消息时,我尝试运行SQL命令:MySQL语法错误1064行194添加多对多关系的外键

 
ERROR 1064 (42000) at line 194: 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 '(
    ADD CONSTRAINT VFSGRPUSR_REF_VFSGRP 
     FOREIGN KEY (VFSGRP) 
     REFERENCES `VFS' at line 1 

我想实现一个多到多的关系。

----------------------------------------------------------------------------------------

DROP TABLE IF EXISTS VFSGRPUSR;

CREATE TABLE VFSGRPUSR ( VFSGRP INTEGER REFERENCES VFSGRP(VFSGRP_ID), VFSUSR INTEGER REFERENCES VFSUSR(VFSUSR_ID), PRIMARY KEY (VFSGRP, VFSUSR) )ENGINE=InnoDB DEFAULT CHARSET utf8;

----------------------------------------------------------------------------------------

DROP TABLE IF EXISTS VFSUSR;

CREATE TABLE VFSUSR ( VFSUSR_ID INTEGER NOT NULL auto_increment, DEPARTMENT INTEGER, FIRSTNAME VARCHAR(255) NOT NULL, SURNAME VARCHAR(255) NOT NULL, LOGIN VARCHAR(255) NOT NULL, PASSWORD BLOB, TOKEN BLOB, PRIMARY KEY (VFSUSR_ID), CONSTRAINT VFSUSR_REF_DEPARTMENT FOREIGN KEY (DEPARTMENT) REFERENCES DEPARTMENT (DEPARTMENT_ID) )ENGINE=InnoDB DEFAULT CHARSET utf8;

----------------------------------------------------------------------------------------

DROP TABLE IF EXISTS VFSGRP;

CREATE TABLE VFSGRP ( VFSGRP_ID INTEGER NOT NULL auto_increment, GROUPNAME VARCHAR(255) NOT NULL, PRIMARY KEY (VFSGRP_ID) )ENGINE=InnoDB DEFAULT CHARSET utf8;

----------------------------------------------------------------------------------------

ALTER TABLE VFSGRPUSR( ADD CONSTRAINT VFSGRPUSR_REF_VFSGRP FOREIGN KEY (VFSGRP) REFERENCES VFSGRP(VFSGRP_ID) )ENGINE=InnoDB DEFAULT CHARSET utf8;

ALTER TABLE VFSGRPUSR( ADD CONSTRAINT VFSGRPUSR_REF_VFSUSR FOREIGN KEY (VFSUSR) REFERENCES VFSUSR(VFSUSR_ID) )ENGINE=InnoDB DEFAULT CHARSET utf8;

回答

1

为什么你想也设置ENGINECHARSET?只需使用:

ALTER TABLE VFSGRPUSR 
    ADD CONSTRAINT VFSGRPUSR_REF_VFSGRP 
     FOREIGN KEY (VFSGRP) 
     REFERENCES VFSGRP(VFSGRP_ID); 

,并参考官方文档可用的语法:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

+0

日食奇怪。我已经尝试过,但似乎可能月食不喜欢我。也许隐藏的字符!非常感谢你。 – weedlight 2012-04-19 15:01:51

+0

我很高兴你能工作。考虑如果答案对你有帮助,则将其标记为已接受。 – 2012-04-19 15:02:59