我在创建表时遇到了麻烦,但我不明白怎么了。 phpMyAdmin在PRIMARY KEY声明旁边设置错误指示器...我不知道为什么这是错误的...
该表是一个子表,它与另一个表具有一对多的标识关系。
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)
编辑:这是我可以找到的所有关于错误代码的文档:Link
EDIT2:图片已删除
编辑3:
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
或仅删除该子句),便可以创建引用。
关于mysql - MySQL错误150,无法创建表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26852997/