首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >errno: 150“外键约束格式不正确”

问errno: 150“外键约束格式不正确”
EN

Stack Overflow用户
提问于 2015-06-28 01:46:29
回答 3查看 9.6K关注 0票数 1

当我尝试运行以下安装脚本时,我得到了150错误。怎么了?

serverPermissions似乎触发了这个错误,但我不太确定原因。据我所知,外键约束都被正确地映射了。我可能遗漏了一些明显的东西。

代码语言:javascript
复制
-- Setup my members database
DROP DATABASE IF EXISTS mymembers;
CREATE DATABASE IF NOT EXISTS mymembers;

/*
* The list of all members in the community
*/
DROP TABLE IF EXISTS members;
CREATE TABLE members
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
steamID3 INT NOT NULL UNIQUE,
PRIMARY KEY (id)
);

/*
* Lists all servers in operation
*/
DROP TABLE IF EXISTS servers;
CREATE TABLE servers
(
sid INT NOT NULL AUTO_INCREMENT,
sname VARCHAR(30), -- name of server (short name)
PRIMARY KEY(sid)
);

/*
* Maps a member and a server together along with a flag. 
* Record (0, 12, 1, 0) indicates member 12 has flag 0 on server 1.
*/
DROP TABLE IF EXISTS serverPermissions;
CREATE TABLE serverPermissions
(
mid INT,
sid INT,
flagid INT,
PRIMARY KEY(mid, sid, flagid),
FOREIGN KEY (mid) REFERENCES members(id),
FOREIGN KEY (sid) REFERENCES servers(sid),
FOREIGN KEY (flagid) REFERENCES flags(id)
);

/*
* flags are used to give custom permissions to players.
* For example a record may be: (0, "VIP", "This play is very important")
*/
DROP TABLE IF EXISTS flags;
CREATE TABLE flags
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(10),
description VARCHAR(100),
PRIMARY KEY(id)
);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-28 01:50:09

更改表的创建顺序。您应该在创建serverPermissions之前创建flags表。请参阅Demo Here。

票数 3
EN

Stack Overflow用户

发布于 2017-02-21 17:49:01

在添加外键约束时,两个表的存储类型都应为InnoDb。将两个表的类型从MyISAM更改为InnoDB

票数 2
EN

Stack Overflow用户

发布于 2017-09-18 11:58:53

此链接(https://mariadb.org/mariadb-innodb-foreign-key-constraint-errors/)提供了支持外键的引擎类型的快速快照。

据我所知,以下MariaDB和/或MySQL存储引擎支持外键:

代码语言:javascript
复制
InnoDB (both innodb_plugin and XtraDB)
PBXT (https://mariadb.com/kb/en/mariadb/about-pbxt/)
SolidDB for MySQL (http://sourceforge.net/projects/soliddb/)
ScaleDB (https://mariadb.com/kb/en/mariadb/scaledb/ and http://scaledb.com/pdfs/TechnicalOverview.pdf)
MySQL Cluster NDB 7.3 or later (https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-ndb-innodb-engines.html)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31091657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档