mariaDB外键未成形 - varchar不是签名/未签名的问题

时间:2017-01-03 02:59:20

标签: mysql foreign-keys mariadb foreign-key-relationship

MAC Sierra 10.12.2 mariaDB Vers 10.1.19 从Querious Table Syntax窗口剪切/粘贴构造语句。

第一张表:

CREATE TABLE `USAStates` (
  `state_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `state_abbrev` varchar(6) NOT NULL DEFAULT '',
  `electoral_votes` smallint(2) DEFAULT '0',
  `fed_reg` smallint(2) DEFAULT '0',
  `econ_anal_reg` varchar(128) DEFAULT NULL,
  `FRB_district` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`state_id`,`state_abbrev`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;

第二张表:

CREATE TABLE `FRBCommentary` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `state_abbrev` varchar(6) NOT NULL DEFAULT '',
  `FRB_district_rem` longtext,
  PRIMARY KEY (`id`,`state_abbrev`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;

来自命令窗口的ALTER语句的结果;使用Querious工具获得相同的结果:

MariaDB [ESHOP]> 
    ALTER TABLE FRBCommentary
    ADD CONSTRAINT FOREIGN KEY (state_abbrev)
    REFERENCES USAStates (state_abbrev);
  

错误1005(HY000):无法创建表eshop#sql-74b_41(错误号码:   150“外键约束形成错误”)MariaDB [ESHOP]>

曾经非常胜任MS Access ...多年后试图学习真实的东西。

1 个答案:

答案 0 :(得分:0)

您需要在引用列上建立索引。

ALTER TABLE USAStates ADD INDEX (state_abbrev);