【问题标题】:web2py reference field unique=True attribute not workingweb2py 参考字段唯一 = True 属性不起作用
【发布时间】:2013-12-18 20:36:18
【问题描述】:

我使用 web2py 并具有以下表定义:

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

希望有人能告诉我为什么我无法将外键设置为唯一以及为什么它不起作用。

谢谢, 导航

【问题讨论】:

    标签: python mysql web2py


    【解决方案1】:

    这很奇怪,但更奇怪的是,您确实在您的唯一字段中放置了 IS_IN_DB 验证器。我不知道你想做什么,但你应该用 IS_NOT_IN_DB 验证器替换。因此,它将向您保证您的字段“my_info_id”在您的数据库中是唯一的。

    【讨论】:

    • 我试图使外键独一无二,事后看来这并没有什么意义。这就是为什么 unique 在 web2py 中不起作用的原因,但是如果想要这样做,在纯 MySQL 中也不是不可能的。
    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多