【问题标题】:ERROR 1215: Cannot add foreign key constraint when using ON DELETE SET NULLERROR 1215:使用 ON DELETE SET NULL 时无法添加外键约束
【发布时间】:2013-05-17 11:37:58
【问题描述】:

我正在尝试在 MySQL 中创建以下表。第一个:

CREATE TABLE IF NOT EXISTS address(
  address_id INT NOT NULL AUTO_INCREMENT,
  address_region VARCHAR(10) NOT NULL,
  address_country VARCHAR(20) NOT NULL,
  address_city VARCHAR(30) NOT NULL,
  PRIMARY KEY(address_id))ENGINE = InnoDB;

我创建成功了,但是当我尝试创建另一个表时,如下所示

CREATE TABLE IF NOT EXISTS spot(
  spot_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  spot_address INT(11) NOT NULL,
  spot_name VARCHAR(50) NOT NULL,
  spot_desc VARCHAR(500) DEFAULT ' ',
  spot_speadd VARCHAR(100) NOT NULL,
  spot_viewtime INT DEFAULT 0,
  FOREIGN KEY(spot_address)
  REFERENCES address(address_id)
  ON DELETE SET NULL
  ON UPDATE SET NULL);

我收到一个错误:

ERROR 1215 (HY000): 无法添加外键约束

为什么这个创建表语句会失败?

【问题讨论】:

  • 我认为你是对的,它有效!!!
  • 获取详细错误:运行SHOW ENGINE INNODB STATUS 并查看“最新外键错误”部分

标签: mysql


【解决方案1】:

您在spot 表中的spot_address 上有NOT NULL 约束,然后在父表address 中删除或更新时尝试将其设置为NULL

【讨论】:

    【解决方案2】:

    你可以试试这个:

    CREATE TABLE IF NOT EXISTS address
    (
    address_id INT NOT NULL AUTO_INCREMENT,
    address_region VARCHAR(10) NOT NULL,
    address_country VARCHAR(20) NOT NULL,
    address_city VARCHAR(30) NOT NULL,
    PRIMARY KEY(address_id)
    )ENGINE = INNODB;
    
    
    
    
    CREATE TABLE IF NOT EXISTS `spot`
    (
      `spot_id` INT(11) NOT NULL AUTO_INCREMENT,
      `spot_address` INT(11) NOT NULL,
      `spot_name` VARCHAR(50) NOT NULL,
      `spot_desc` VARCHAR(500) DEFAULT ' ',
      `spot_speadd` VARCHAR(100) NOT NULL,
      `spot_viewtime` INT(11) DEFAULT '0',
      PRIMARY KEY (`spot_id`),
      KEY `spot_address` (`spot_address`),
      CONSTRAINT `spot_ibfk_1` FOREIGN KEY (`spot_address`) REFERENCES `address` (`address_id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2013-09-26
    • 2014-03-27
    • 2018-09-09
    • 1970-01-01
    • 2021-09-24
    • 2017-07-16
    相关资源
    最近更新 更多