2014-02-26 133 views
0

我想在具有外键的数据库中创建表。我错过了什么?mysql创建外键失败的表

CREATE TABLE `users` (
`id` bigint(10) NOT NULL AUTO_INCREMENT, 
`userName` varchar(24) NOT NULL DEFAULT '', 
`password` varchar(32) NOT NULL DEFAULT '', 
`firstName` varchar(32) NOT NULL DEFAULT '', 
`lastName` varchar(32) NOT NULL DEFAULT '', 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 


CREATE TABLE `topLevelPermissions` (
`id` bigint(10) NOT NULL AUTO_INCREMENT, 
`userId` bigint(10) NOT NULL DEFAULT '0', 
`user` char(1) NOT NULL DEFAULT '0', 
`group` char(1) NOT NULL DEFAULT '0', 
`someField` char(1) NOT NULL DEFAULT '0', 
`someOtherField` char(1) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`), 
FOREIGN KEY (`userId`) REFERENCES users (`id`) ON DELETE CASCADE 
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 

我看不出任何与外键相关的东西。事实上,当我

show create table topLevelPermissions; 

我看到

CREATE TABLE `topLevelPermissions` (
`id` bigint(10) NOT NULL AUTO_INCREMENT, 
`userId` bigint(10) NOT NULL DEFAULT '0', 
`user` char(1) NOT NULL DEFAULT '0', 
`group` char(1) NOT NULL DEFAULT '0', 
`someField` char(1) NOT NULL DEFAULT '0', 
`someOtherField` char(1) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`), 
KEY `userId` (`userId`) 
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 
+0

Innodb只支持外键约束 –

+0

使它成为答案,我会在11分钟内接受。 – bart2puck

+0

谢谢@ bart2puck –

回答

1

Innodb的只支持外键约束。所以,如果你想利用外键约束,切换到Innodb。