我是数据库设计的新手,但我读到您可能在一个表中有两个外键。由于某些原因,尝试在phpMyAdmin中运行以下SQL时出现错误。
CREATE TABLE tbl_user
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(45) NOT NULL,
password VARCHAR(45) NOT NULL,
email VARCHAR(72) NOT NULL,
first_name VARCHAR(45),
last_name VARCHAR(45),
role VARCHAR(20),
UNIQUE(username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_profile
(
id INTEGER NOT NULL PRIMARY KEY,
attribute VARCHAR(128) NOT NULL,
value VARCHAR(128) NOT NULL,
CONSTRAINT FK_userid FOREIGN KEY (id)
REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_attribute FOREIGN KEY (attribute)
REFERENCES tbl_attribute (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_attribute
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
description TEXT,
data_type VARCHAR(45)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
任何帮助是极大的赞赏!
外键列和主键列的数据类型不匹配;这些必须匹配。
tbl_profile(attribute) is VARCHAR
tbl_attribute(id) is INT
另外,在创建外键约束之前,必须先创建引用表。(创建表后,我们经常会在ALTER TABLE语句中看到单独定义的外键约束。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句