【问题标题】:MySQL innodb foreign keysMySQL innodb 外键
【发布时间】:2014-11-26 03:18:02
【问题描述】:

为什么这条sql不会创建外键?

DROP TABLE IF EXISTS `flow_people`;
CREATE TABLE `flow_people` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `active` enum('0','1') COLLATE utf8_unicode_ci DEFAULT '0',
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `token` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `unixtime` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `company_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `salutation` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
  `first_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `middle_name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `last_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `dob` date NOT NULL,
  `cams` decimal(7,0) NOT NULL,
  `location_id` int(8) NOT NULL,
  `people_type` int(8) NOT NULL COMMENT 'flow_people_types',
  `comment` longtext COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`people_type`) REFERENCES flow_people_types(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1666 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

表 flow_people_types 存在,它有一个 ID 列。

我想我在这里遗漏了一些基本的东西,有什么问题?

【问题讨论】:

  • 外键约束对两个表上使用的确切数据类型敏感,并且父表必须在引用列上有索引。任何现有数据也必须满足约束的要求。如果没有看到其他表的定义,就不可能说为什么这不起作用。
  • 外键喜欢的列必须具有完全相同的属性。

标签: mysql sql foreign-keys create-table


【解决方案1】:

查看此链接MySQL Foreign Keys:

试试这个:

DROP TABLE IF EXISTS `flow_people`;
CREATE TABLE `flow_people` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `active` ENUM('0','1') COLLATE utf8_unicode_ci DEFAULT '0',
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `token` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `unixtime` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  `company_name` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `salutation` VARCHAR(4) COLLATE utf8_unicode_ci DEFAULT NULL,
  `first_name` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL,
  `middle_name` VARCHAR(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `last_name` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL,
  `dob` DATE NOT NULL,
  `cams` DECIMAL(7,0) NOT NULL,
  `location_id` INT(8) NOT NULL,
  `people_type` INT(8) NOT NULL COMMENT 'flow_people_types',
  `comment` LONGTEXT COLLATE utf8_unicode_ci,
  PRIMARY KEY (`id`),
  KEY `FK_flow_people_FPT` (`people_type`),
  CONSTRAINT `FK_flow_people_FPT` FOREIGN KEY (`people_type`) REFERENCES flow_people_types(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=INNODB AUTO_INCREMENT=1666 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 2021-04-29
    • 2016-03-19
    • 2012-04-23
    • 2010-12-07
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多