【问题标题】:Real difference between 'reference' and 'db.table_name''reference' 和 'db.table_name' 之间的真正区别
【发布时间】:2012-11-21 20:23:50
【问题描述】:

我有一个带有 web2py 外键的问题,因为缺乏这方面的文档,这非常令人沮丧。我在大多数表相关的不同文件中定义表。我曾经使用 db.table_name 来表示外键,但有人告诉我使用“reference tbl_name”。然而,这没有任何区别,我仍然收到错误,因为根据 web2py 的字母顺序规则,在以后的文件中定义的模型会出现错误。看起来按顺序排列表格实际上很重要,这使得引用关键字的使用充其量是无用的。还是我在这里遗漏了什么。

【问题讨论】:

  • 我认为您遗漏了一些东西,但除非您提供您看到的错误以及可用于重现它们的代码,否则很难说。 reference tbl_name 语法确实允许您引用尚未定义的表,因此您的问题一定是其他问题。

标签: foreign-keys data-access-layer web2py


【解决方案1】:

我假设您使用的是mysql。在这种情况下,这是一个mysql 错误。 mysql 引发错误 150(外键错误)。因此,这是一个数据库后端问题,而不是 web2py 问题。请务必检查您的数据库服务器的文档。我如何解决这个问题是在db.py 文件中声明(db.define_table)首先不需要外键的所有主表,然后继续声明需要外键的表(只需确保在引用它之前存在外表)。如果您对models 文件夹中的不同表使用单独的文件,请尝试找出哪些表是主表,并确保首先通过在文件名前加上数字来创建它们,以便在引用表中的外键之前, 'foreign' 表已经存在于数据库中。

但是,sqlite 应该没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多