Django South从SQLite3架构中删除外键REFERENCES。为什么?这是个问题吗?

时间:2010-09-10 00:40:50

标签: python django sqlite django-south

使用syncdb时,会创建以下架构:

CREATE TABLE "MyApp_supervisor" (
    "id" integer NOT NULL PRIMARY KEY,
    "supervisor_id" integer NOT NULL REFERENCES "MyApp_employee" ("id"),
    "section_id" integer NOT NULL REFERENCES "MyApp_section" ("id")
);

使用migrate时,它会更改为:

CREATE TABLE "MyApp_supervisor" (
    "id" integer NOT NULL PRIMARY KEY,
    "supervisor_id" integer NOT NULL,
    "section_id" integer NOT NULL
);

为什么南方会这样做?我还没有注意到一个功能性问题,但我厌倦了忽略这个......

有人可以了解这里发生的事情吗?

1 个答案:

答案 0 :(得分:0)

可能是因为SQL32中仅在版本3.6.19 as this page says中引入了外键支持:

  

本文档介绍了该支持   用于SQL外键约束   在SQLite版本3.6.19中引入。

它看起来像版本3.6.19 was tagged on 14th Oct 2009,这实际上是最近的,所以它可能还没有在任何地方部署。

我猜这个选择不是为了声明外键,因为它们还没有被广泛支持,这取决于所使用的SQLite的版本。 (话虽如此,之前支持外键语法,但只是被忽略了。)