mysql 语法错误 1064 在第 194 行为多对多关系添加外键

Posted

技术标签:

【中文标题】mysql 语法错误 1064 在第 194 行为多对多关系添加外键【英文标题】:mysql syntax error 1064 at line 194 add foreign key for many-to-many relationship 【发布时间】:2012-05-01 02:16:36 【问题描述】:

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

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

我正在尝试实现多对多关系。

<pre></pre>

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

如果存在则删除表VFSGRPUSR;

创建表VFSGRPUSR ( VFSGRP 整数引用 VFSGRP(VFSGRP_ID), VFSUSR 整数引用 VFSUSR(VFSUSR_ID), 主键 (VFSGRP, VFSUSR) )ENGINE=InnoDB 默认字符集 utf8;

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

如果存在则删除表VFSUSR;

创建表VFSUSR ( VFSUSR_ID INTEGER NOT NULL auto_increment, DEPARTMENT整数, FIRSTNAME VARCHAR(255) 非空, SURNAME VARCHAR(255) 非空, LOGIN VARCHAR(255) 非空, PASSWORDBLOB, TOKENBLOB, 主键 (VFSUSR_ID), CONSTRAINT VFSUSR_REF_DEPARTMENT FOREIGN KEY (DEPARTMENT) REFERENCES DEPARTMENT (DEPARTMENT_ID) )ENGINE=InnoDB 默认字符集 utf8;

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

如果存在则删除表VFSGRP;

创建表VFSGRP ( VFSGRP_ID INTEGER NOT NULL auto_increment, GROUPNAME VARCHAR(255) 非空, 主键 (VFSGRP_ID) )ENGINE=InnoDB 默认字符集 utf8;

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

更改表 VFSGRPUSR( 添加约束 VFSGRPUSR_REF_VFSGRP 外键 (VFSGRP) 参考VFSGRP(VFSGRP_ID) )ENGINE=InnoDB 默认字符集 utf8;

更改表 VFSGRPUSR( 添加约束 VFSGRPUSR_REF_VFSUSR 外键 (VFSUSR) 参考VFSUSR(VFSUSR_ID) )ENGINE=InnoDB 默认字符集 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

【讨论】:

日食很奇怪。我以前试过,但似乎日食不喜欢我。也许隐藏的字符!非常感谢。

以上是关于mysql 语法错误 1064 在第 194 行为多对多关系添加外键的主要内容,如果未能解决你的问题,请参考以下文章

MySQL #1064 - 您的 SQL 语法 2020 有错误 [重复]

MySQL 语法错误 1064 与 MS Access 中的联合查询

错误 1064:显示语法错误无法找到导致此错误的原因

MySQL错误代码:在MySQL Workbench中创建表期间出现1064 [关闭]

mysql error (#1064) 存储过程创建错误

空字符串无法解释的MySQL错误#1064创建更新触发器后?