我有麻烦创建一个表,我不了解什么是错误的。头文件设置错误的指标下的主要关键宣言》...我不明白为什么这是错误的...

该表是儿童表,其中有一对很多别的关系与另一个表中。

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: 图片删除

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
有帮助吗?

解决方案

检查Gebruikers_gebruiker_idGebruikers.gebruiker_id具有相同的数据类型。

此外,检查Gebruikers.gebruiker_id是在PRIMARY KEY一个Gebruikers

<强>更新

您有ON DELETE SET NULL定义的,而你的Gebruikers_gebruiker_id被定义为NOT NULL

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

其他提示

林我的情况下其通常是因为一个数据类型不匹配的。请记住,如果它是一个int检查两者是否任一的无符号或不

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

一个理由添加:

  

不同的字符集或发动机也将导致此问题

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top