'reference'和'db.table_name'之间的真正区别

时间:2012-12-04 08:49:13

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

我有一个关于web2py外键的问题,因为这是缺乏关于它的相当令人讨厌的文档。我在大多数表相关的不同文件中定义表。我曾经使用db.table_name来表示外键,但我被告知使用'reference tbl_name'。然而,这没有任何区别,我仍然会根据web2py的字母顺序规则,对后续文件中定义的模型进行错误评估。看起来按顺序排列表似乎很重要,使得引用关键字的使用充其量只是无用的。或者我在这里错过了一些东西。

1 个答案:

答案 0 :(得分:0)

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

但是,sqlite应该没有问题。