web2py: FOREIGN KEY 约束在不应该的时候失败了

web2py: FOREIGN KEY constraint failed when it shouldn't

我有这个table:

db.define_table('block',
    Field('ore_id', 'reference ore'),
    Field('location', type='integer', required=True, notnull = True),
    Field('x', type='integer'),
    Field('y', type='integer'),
    Field('block_mass_tn', type='double')
)

还有这个:

db.define_table('block_processing_line_1',
    Field('block_location', 'reference block'),
    Field('processing_time_d', type='double'),
    Field('concentrate_tn', type='double'),
    Field('concentrate_quality', type='double')
)

在 table block 我有 100 个条目,idlocation 运行 从 1-100。当我向后者 table 添加一条新记录且 block_location 为 1 时,它会接受它,但是当我尝试添加 2 或 3 等时,它不会接受它并显示 "FOREIGN KEY constraint failed"。我还有其他 tables,它们具有相同的字段:Field('block_location', 'reference block'), 但它们对大于 1 的值没有任何问题。这里有什么问题?

我想到的另一件事是我之前遇到过同样的问题 table 我意识到我打错了字:Field('block_location', 'reference ore'), 所以我引用了一个错误的 table 并且 table ore 只有一个条目(因此只接受 1 而没有其他)。但是现在即使我修复了它,问题仍然存在。在 DAL 的某处是否可以找到那条前线的痕迹?我在修复后截断了 tables(blockblock_processing_line_1

@安东尼:

Have you compiled the app or turned off migrations? If neither, maybe try dropping the block_processing_line_1 table.

这就解决了!我删除了 table 并保存,"undropped" 删除了 table 并保存,之后它就可以正常工作了。所以这一行:

db.block_processing_line_1.drop()