【发布时间】:2014-02-16 13:44:37
【问题描述】:
我在获取 VARCHAR 列上的外键时遇到了困难。
理想情况下,我希望将其作为复合 FK(从我添加它的尝试中可以看出)。
在本地,在 MySQL 5.6 上运行此脚本,我收到错误 #1215。 在 CloudBees 上运行脚本时,我得到 err 150
我在这里看到了关于数据类型完全相同的其他问题,我已经验证了这一点,正如您从脚本中看到的那样。
/* Start of REGION table */
CREATE TABLE REGION (
ID INTEGER NOT NULL AUTO_INCREMENT, /* Unique Identifier */
RORDER INTEGER, /* Order to be displayed by (currently unused) */
LANG VARCHAR(3) DEFAULT 'en' , /* Language of this entry */
NAME VARCHAR(30) NOT NULL, /* Region Name */
DESCR VARCHAR(50) DEFAULT '' NOT NULL, /* Region Desc */
ACTIVE INTEGER DEFAULT '1' NOT NULL, /* Is item active or not */
CDATE TIMESTAMP DEFAULT 0, /* Create Date */
MODDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, /* Last Update Date */
INSUSER VARCHAR(20) DEFAULT 'SYSTEM' NOT NULL, /* User that inserted this entry */
MODUSER VARCHAR(20), /* User that last modified this entry */
PRIMARY KEY(id)
) engine InnoDB;
COMMIT;
ALTER TABLE REGION ADD CONSTRAINT UNIQUE (LANG, NAME);
/* End of REGION table */
/* Start of LOCATION table */
CREATE TABLE LOCATION (
ID INTEGER NOT NULL AUTO_INCREMENT, /* Unique Identifier */
REGIONNAME VARCHAR(30) NOT NULL, /* FK - REGION.ID */
LORDER INTEGER, /* Order to be displayed by (currently unused) */
NAME VARCHAR(30) DEFAULT '' NOT NULL, /* Location Name (FK Key) */
LANG VARCHAR(3) DEFAULT 'en' , /* Language of this entry */
DESCR VARCHAR(50) DEFAULT '' NOT NULL, /* Location Desc */
ACTIVE INTEGER DEFAULT '1' NOT NULL, /* Is item active or not */
CDATE TIMESTAMP DEFAULT 0, /* Create Date */
MODDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, /* Last Update Date */
INSUSER VARCHAR(20) DEFAULT 'SYSTEM' NOT NULL, /* User that inserted this entry */
MODUSER VARCHAR(20), /* User that last modified this entry */
PRIMARY KEY(id)
) engine InnoDB;
ALTER TABLE LOCATION ADD CONSTRAINT FK_LOCATION_REGION FOREIGN KEY (REGIONNAME, LANG) REFERENCES REGION(NAME, LANG) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE LOCATION ADD CONSTRAINT UNIQUE (LANG, NAME);
COMMIT;
/* End of LOCATION table */
【问题讨论】:
-
糟糕!我忘了更新 /* 评论 */ 关于什么是外键字段 ... / FK - REGION.ID / 现在应该读取 / 等待 stackoverflow 用户的响应 /
标签: mysql foreign-keys varchar cloudbees composite-key