mysql 创建表 创建索引,MySQL创建表索引错误

好的,所以我要在MySQL中用索引和外键创建表.我使用MySQL Workbench创建表,然后使它正向工程设计SQL创建脚本(在可视化数据库环境中,我做得比直接立即写出SQL代码要好).

问题很多时候,当我将sql脚本导入mysql时,我得到了经典的错误:

#1005 - Can't create table 'db.tablename' (errno: 121)

我每次都能设法解决问题,通常是与索引/外键有关,但是现在,我不得不每次都必须解决它,这让我很恼火.我真的不明白问题出在哪里(尤其是当MySQL产品正在为其自己的数据库创建sql代码时).下面是一些通常会导致问题的代码.

CREATE TABLE IF NOT EXISTS `db`.`groupMembers` (

`groupMembersID` INT NOT NULL AUTO_INCREMENT ,

`groupID` INT NOT NULL ,

`userID` INT NULL ,

PRIMARY KEY (`groupMembersID`) ,

INDEX `group` (`groupID` ASC) ,

INDEX `user` (`userID` ASC) ,

CONSTRAINT `group`

FOREIGN KEY (`groupID` )

REFERENCES `db`.`groups` (`groupsID` )

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT `user`

FOREIGN KEY (`userID` )

REFERENCES `db`.`users` (`usersID` )

ON DELETE CASCADE

ON UPDATE CASCADE)

ENGINE = InnoDB;

该错误通常来自第一个INDEX定义-即使当我取出索引定义时,我也只会在第一个外键约束定义上得到错误.我已经检查过了,外键远程列和本地列是相同的数据类型和大小.

解决方法:

“ errno 121表示重复的密钥错误”

约束在数据库中必须具有唯一的名称,您可能想更改FK名称.这样,FK_groupMembers_group和FK_groupMembers_user.

标签:mysql-error-1005,database-design,mysql

来源: https://codeday.me/bug/20191107/2003106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值