mysql表与表之间外键非空_表创建表单mysql workbench上的MySQL 150错误(外键选项与列中的非空冲突,FIXED)...

所以,当我从mysql工作台转发模式时,我得到了一个非常错误的150错误。

我已确定所有pk和fk都具有相同的类型。所有表都是innodb引擎。

也许我在这里错过了一些愚蠢的东西(如果我这样做,我会很抱歉),但是您的帮助将非常值得赞赏。

这是150错误失败的脚本:

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';

SHOW WARNINGS;

CREATE SCHEMA IF NOT EXISTS `bis` DEFAULT CHARACTER SET latin1 ;

SHOW WARNINGS;

USE `bis` ;

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

-- Table `bis`.`entities`

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

DROP TABLE IF EXISTS `bis`.`entities` ;

SHOW WARNINGS;

CREATE TABLE IF NOT EXISTS `bis`.`entities` (

`entity_name` VARCHAR(64) NOT NULL ,

`entity_description` TEXT NULL DEFAULT NULL ,

`entity_email` TEXT NOT NULL ,

`entity_phone` VARCHAR(11) NULL DEFAULT NULL ,

`entity_website` VARCHAR(64) NULL DEFAULT NULL ,

PRIMARY KEY (`entity_name`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

SHOW WARNINGS;

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

-- Table `bis`.`users`

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

DROP TABLE IF EXISTS `bis`.`users` ;

SHOW WARNINGS;

CREATE TABLE IF NOT EXISTS `bis`.`users` (

`user_name` VARCHAR(64) NOT NULL ,

`user_entity` VARCHAR(64) NOT NULL ,

`user_email` TEXT NOT NULL ,

`user_password` CHAR(64) NOT NULL ,

`user_salt` CHAR(64) NOT NULL ,

`user_role` VARCHAR(45) NOT NULL ,

`user_realName` VARCHAR(64) NOT NULL ,

`user_surname` VARCHAR(64) NOT NULL ,

`user_IDnumber` VARCHAR(13) NOT NULL ,

`user_cellNumber` VARCHAR(11) NOT NULL ,

PRIMARY KEY (`user_name`) ,

INDEX `entity_id` (`user_entity` ASC) ,

CONSTRAINT `entity_id`

FOREIGN KEY (`user_entity` )

REFERENCES `bis`.`entities` (`entity_name` )

ON DELETE SET NULL

ON UPDATE CASCADE)

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

SHOW WARNINGS;

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

-- Table `bis`.`reports`

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

DROP TABLE IF EXISTS `bis`.`reports` ;

SHOW WARNINGS;

CREATE TABLE IF NOT EXISTS `bis`.`reports` (

`report_id` INT NOT NULL AUTO_INCREMENT ,

`user_name` VARCHAR(64) NOT NULL ,

`investigator_name` VARCHAR(64) NOT NULL ,

`report_entity` VARCHAR(64) NOT NULL ,

`report_finished` TINYINT(1) NULL DEFAULT false ,

`submit_date` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,

`finished_date` TIMESTAMP NULL ,

`report_PDFFile` LONGBLOB NULL ,

PRIMARY KEY (`report_id`) ,

INDEX `user_id` (`user_name` ASC) ,

INDEX `investigator_id` (`investigator_name` ASC) ,

INDEX `entity_id` (`report_entity` ASC) ,

CONSTRAINT `user_id`

FOREIGN KEY (`user_name` )

REFERENCES `bis`.`users` (`user_name` )

ON DELETE SET NULL

ON UPDATE CASCADE,

CONSTRAINT `investigator_id`

FOREIGN KEY (`investigator_name` )

REFERENCES `bis`.`users` (`user_name` )

ON DELETE SET NULL

ON UPDATE CASCADE,

CONSTRAINT `entity_id`

FOREIGN KEY (`report_entity` )

REFERENCES `bis`.`entities` (`entity_name` )

ON DELETE SET NULL

ON UPDATE CASCADE)

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

SHOW WARNINGS;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;然后出现相应的错误:

Executing SQL script in server

ERROR: Error 1005: Can't create table 'bis.users' (errno: 150)

CREATE TABLE IF NOT EXISTS `bis`.`users` (

`user_name` VARCHAR(64) NOT NULL ,

`user_entity` VARCHAR(64) NOT NULL ,

`user_email` TEXT NOT NULL ,

`user_password` CHAR(64) NOT NULL ,

`user_salt` CHAR(64) NOT NULL ,

`user_role` VARCHAR(45) NOT NULL ,

`user_realName` VARCHAR(64) NOT NULL ,

`user_surname` VARCHAR(64) NOT NULL ,

`user_IDnumber` VARCHAR(13) NOT NULL ,

`user_cellNumber` VARCHAR(11) NOT NULL ,

PRIMARY KEY (`user_name`) ,

INDEX `entity_id` (`user_entity` ASC) ,

CONSTRAINT `entity_id`

FOREIGN KEY (`user_entity` )

REFERENCES `bis`.`entities` (`entity_name` )

ON DELETE SET NULL

ON UPDATE CASCADE)

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1

SQL script execution finished: statements: 13 succeeded, 1 failed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值