MySQL错误150,不能创建表(MySQL error 150, cannot create ta

2019-06-28 01:04发布

我无法创建一个表,我不明白什么是错的。 phpMyAdmin的设置错误指示灯旁边的主键声明......我不知道为什么这是错的?

此表是一个子表,它与另一桌的一个一对多识别的关系。

CREATE TABLE IF NOT EXISTS `ruilen`.`Voorwerpen` (
`voorwerpen_id` INT NOT NULL AUTO_INCREMENT ,
`naam` VARCHAR( 45 ) NOT NULL ,
`beschrijving` VARCHAR( 45 ) NULL ,
`Gebruikers_gebruiker_id` INT NOT NULL ,
PRIMARY KEY ( `voorwerpen_id` , `Gebruikers_gebruiker_id` ) ,
CONSTRAINT `fk_Voorwerpen_Gebruikers1` FOREIGN KEY ( `Gebruikers_gebruiker_id` ) REFERENCES `ruilen`.`Gebruikers` (
`gebruiker_id`
) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB;

MySQL said: Documentation
#1005 - Can't create table 'ruilen.voorwerpen' (errno: 150) 

编辑:这是所有错误代码我能找到的文档: 链接

EDIT2:PIC删除

EDIT3:

CREATE TABLE `gebruikers` (
 `gebruiker_id` int(11) NOT NULL,
 `naam` varchar(45) NOT NULL,
 `straat` varchar(45) NOT NULL,
 `gemeente` varchar(45) NOT NULL,
 `mail` varchar(45) NOT NULL,
 `beschrijving` varchar(45) DEFAULT NULL,
 PRIMARY KEY (`gebruiker_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Answer 1:

检查Gebruikers_gebruiker_idGebruikersgebruiker_id具有相同的数据类型。

同时检查Gebruikersgebruiker_idPRIMARY KEYGebruikers

更新:

你已经ON DELETE SET NULL定义的,而你的Gebruikers_gebruiker_id被定义为NOT NULL

修复它(改变ON DELETE CASCADE或只是删除该子句),你就可以创建引用。



Answer 2:

IM通常其由于数据类型不匹配的我的情况。 请记住,如果它是一个int检查都是无符号或不



Answer 3:

这多少is'nt的MySQL越野车的特性。 可以有这两个可能的原因! 1)PK和FK的数据类型不匹配。 2)此错误可以拿出在4.1之前的版本,你需要明确定义索引。



Answer 4:

一个理由补充:

不同的字符集或发动机也会出现这种问题



Answer 5:

在我的人这方面的经验的MySQL非常错误的特征 - 和最不麻烦是刚刚倾倒的表结构和数据,然后删除该表,并从转储手动重新运行该SQL,然后重新创建索引和外键约束在需要的地方。



Answer 6:

我有一个同名的约束在一个不同的表。 试着改变你的约束的名称。



文章来源: MySQL error 150, cannot create table