【问题标题】:web2py: FOREIGN KEY constraint failed when it shouldn'tweb2py:外键约束不应该失败
【发布时间】:2015-12-23 05:20:54
【问题描述】:

我有这张桌子:

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')
)

在表 block 我有 100 个条目,idlocation 从 1-100 运行。当我在后一张表中添加一条新记录时,block_location 为 1,它会接受它,但是当我尝试添加 2 或 3 等时,它不会接受它并显示“FOREIGN KEY 约束失败”。我有其他表,它们具有相同的字段:Field('block_location', 'reference block'),,但它们对高于 1 的值没有任何问题。这里有什么问题?

我想到的另一件事是我之前在使用该表时遇到了同样的问题,我意识到我打错了:Field('block_location', 'reference ore'), 所以我引用了一个错误的表,而该表 ore 只有一个条目(因此只接受 1 而没有别的)。但是现在即使我修复了它,问题仍然存在。在 DAL 的某处是否有前行的痕迹?我在修复后截断了两个表(blockblock_processing_line_1

【问题讨论】:

  • 您是否编译了应用程序或关闭了迁移?如果两者都没有,可以尝试删除block_processing_line_1 表。

标签: database web2py data-access-layer


【解决方案1】:

@安东尼:

您是否编译了应用程序或关闭了迁移?如果两者都不是,也许 尝试删除 block_processing_line_1 表。

这解决了它!我删除了表格并保存,“取消删除”了表格并保存了,然后它就可以正常工作了。所以这一行:

db.block_processing_line_1.drop()

【讨论】:

    猜你喜欢
    • 2019-10-26
    • 2013-05-29
    • 1970-01-01
    • 2013-03-04
    • 2016-08-17
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多