MySQL Workbench正向工程师错误1215:无法添加外键约束
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL Workbench正向工程师错误1215:无法添加外键约束,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3306字,纯文字阅读大概需要5分钟。
内容图文
![MySQL Workbench正向工程师错误1215:无法添加外键约束](/upload/InfoBanner/zyjiaocheng/894/2db3c422341f41469fd9f211f5b337d1.jpg)
当我执行此脚本以创建2个表时,CUSTOMER表中的STORE列引用USERS表中的ID列(两列都是INT):
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `part_finder` DEFAULT CHARACTER SET utf8 ;
USE `part_finder` ;
-- -----------------------------------------------------
-- Table `part_finder`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `part_finder`.`users` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`account` MEDIUMINT(7) UNSIGNED NOT NULL COMMENT 'Account organisation user belongs to',
`name` VARCHAR(32) NULL DEFAULT NULL,
`passenc` VARCHAR(32) NULL DEFAULT NULL,
`email` VARCHAR(55) NULL DEFAULT NULL,
`rank` DECIMAL(1,0) NULL DEFAULT '0',
`ip_reg` VARCHAR(15) NULL DEFAULT NULL,
`ip_visit` VARCHAR(15) NULL DEFAULT NULL,
`dtreg` INT(11) NOT NULL,
`dtvisit` INT(11) NOT NULL,
`visits` SMALLINT(5) UNSIGNED NULL DEFAULT '0',
`pass` VARCHAR(25) NULL DEFAULT NULL,
`make_filter_on` TINYINT(1) NULL DEFAULT FALSE,
`brand_filter_on` TINYINT(1) NULL DEFAULT FALSE,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 3;
-- -----------------------------------------------------
-- Table `part_finder`.`customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `part_finder`.`customer` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`store` INT(10) NOT NULL,
`name` VARCHAR(32) NULL,
`address` VARCHAR(45) NULL,
`address_2` VARCHAR(45) NULL,
`city` VARCHAR(15) NULL,
`state` TINYINT UNSIGNED NOT NULL,
`zip` CHAR(5) NULL,
`phone` VARCHAR(15) NULL,
`website` VARCHAR(45) NULL,
`email` VARCHAR(55) NULL,
PRIMARY KEY (`id`),
INDEX `fk_customer_users_idx` (`store` ASC),
CONSTRAINT `fk_customer_users`
FOREIGN KEY (`store`)
REFERENCES `part_finder`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
我收到此错误:
ERROR: Error 1215: Cannot add foreign key constraint
-- -----------------------------------------------------
-- Table `part_finder`.`customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `part_finder`.`customer` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`store` INT(10) NOT NULL,
`name` VARCHAR(32) NULL,
`address` VARCHAR(45) NULL,
`address_2` VARCHAR(45) NULL,
`city` VARCHAR(15) NULL,
`state` TINYINT UNSIGNED NOT NULL,
`zip` CHAR(5) NULL,
`phone` VARCHAR(15) NULL,
`website` VARCHAR(45) NULL,
`email` VARCHAR(55) NULL,
PRIMARY KEY (`id`),
INDEX `fk_customer_users_idx` (`store` ASC),
CONSTRAINT `fk_customer_users`
FOREIGN KEY (`store`)
REFERENCES `part_finder`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 6 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
我正在使用InnoDB,我已经检查了我的外键列的数据类型,并确保我在引用的表中使用了主键.
有任何想法吗?
解决方法:
也许父表中的列是INT UNSIGNED?
它们需要在两个表中具有完全相同的数据类型.
您可能会遇到外键约束错误的原因:
>您正尝试在目标表上引用不存在的键.
确保它是另一个表上的键(它可以是主键或唯一键),
>列的类型不相同(例外是列
在引用表上可以为空().
内容总结
以上是互联网集市为您收集整理的MySQL Workbench正向工程师错误1215:无法添加外键约束全部内容,希望文章能够帮你解决MySQL Workbench正向工程师错误1215:无法添加外键约束所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。