2013-12-18 21 views
0

我的web2py工作,并具有以下表定义:web2py的参考场唯一= true属性不工作

my_info = db.define_table('my_info', 
    Field('my_info_id', 'reference other_info', requires=IS_IN_DB(db, other_info.id, ''), unique=True), 
    Field('interface', 'string', length=32, requires=[IS_NOT_EMPTY()]), 
    Field('size', 'integer', requires=[IS_NOT_EMPTY()])) 

出于某种原因,当我查看了MySQL创建表的语法我没有看到UNIQUE_KEY字段集。下面是创建表的语法:

CREATE TABLE `mgmt_info` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `my_info_id` int(11) DEFAULT NULL, 
    `interface` varchar(32) DEFAULT NULL, 
    `size` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `id__idx` (`id`), 
    CONSTRAINT `my_info_ibfk_1` FOREIGN KEY (`my_info_id`) REFERENCES `other_info` (`id`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 

希望有人可以让我知道为什么我不能设置一个外键,独特的,为什么它不工作。

感谢, 导航

回答

0

这是奇怪,但更古怪的是,在你的独特的领域你是把IS_IN_DB验证。我不知道你想做什么,但是你应该用IS_NOT_IN_DB验证器替换。因此,它会向你保证你的字段'my_info_id'在数据库中是唯一的。

+0

我试图让一个外键独特,事后并没有什么意义。这就是为什么独特的功能在web2py中不起作用,但是如果想要这么做的话,在纯粹的MySQL中并不是不可能的。 – navanitachora