通常我使用 PostgreSQL 并且从来没有遇到过问题,但是现在我需要使用 MySQL 并且遇到了一些麻烦。我正在数据库 user_main_db 中创建一个表。外键有问题,phpMyAdmin 总是给我下一个错误:
1005 - 无法创建表'user_main_db.user_main'(错误号:150)(engine=InnoDB&page=Status&token=136fdbb820093986c79180b24adb304d">详情...)
这是我试图在数据库 user_main_db 中创建的表:
CREATE TABLE user_main
(
uid INTEGER,
fn VARCHAR(40) NOT NULL,
ava VARCHAR(255),
gender tinyint(1) NOT NULL,
dob DATE NOT NULL,
country_id INTEGER,
PRIMARY KEY (uid),
FOREIGN KEY ( uid ) REFERENCES user_basic_db.user_basic(uid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ( country_id ) REFERENCES countries_db.countries(country_id) ON DELETE CASCADE ON UPDATE CASCADE
);
这是数据库 user_basic_db 中的表 user_basic:
CREATE TABLE user_basic
(
uid INTEGER AUTO_INCREMENT,
email VARCHAR(40) NOT NULL,
password VARCHAR(40) NOT NULL,
PRIMARY KEY (uid)
);
这是数据库 countries_db 中的表国家:
CREATE TABLE countries(
country_id INTEGER PRIMARY KEY AUTO_INCREMENT,
country VARCHAR(40) NOT NULL UNIQUE
)
奇怪的是当我如下定义表时:
CREATE TABLE user_main
(
uid INTEGER PRIMARY KEY REFERENCES user_basic_db.user_basic(uid) ON DELETE CASCADE ON UPDATE CASCADE,
VARCHAR(40) NOT NULL,
ava VARCHAR(255),
gender tinyint(1) NOT NULL,
dob DATE NOT NULL,
country_id INTEGER REFERENCES countries_db.countries(country_id) ON DELETE CASCADE ON UPDATE CASCADE
);
查询成功运行,但未创建 FOREIGN KEYS,当我打开“关系视图”时,没有对 uid 和 country_id 的引用,即使没有具有此类 ID 的国家/地区,我也可以插入 user_main(country_id)。请帮助某人。谢谢你。