2

请帮帮我。当我尝试运行 sql 命令时收到以下消息:

第 194 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '(
    添加约束 VFSGRPUSR_REF_VFSGRP
        外键 (VFSGRP)
        参考 `VFS' 在第 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;

4

1 回答 1

2

你为什么还要设置ENGINEand CHARSET?只需使用:

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

于 2012-04-19T14:31:30.447 回答