题
我有麻烦创建一个表,我不了解什么是错误的。头文件设置错误的指标下的主要关键宣言》...我不明白为什么这是错误的...
该表是儿童表,其中有一对很多别的关系与另一个表中。
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_id
和Gebruikers
.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,然后重新创建索引和在需要的地方外键约束。
我与在不同的表上同一名称的约束。 试着改变你的约束的名称。
不隶属于 StackOverflow