我一直在努力使DBMetal处理我的SQLITE数据库。我终于隔离了这个问题。它不允许表具有两个外键引用对同一列的引用。

例如,带有这两个表的SQLITE数据库将失败:

CREATE TABLE Person
(
    Id INTEGER PRIMARY KEY,
    Name TEXT NOT NULL
);

CREATE TABLE Match
(
    Id INTEGER PRIMARY KEY,
    WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
    LoserPersonId INTEGER NOT NULL REFERENCES Person(Id)
);

我得到这个错误:

DBMetal:序列包含多个匹配元素

如果我摆脱了第二个外键参考,则不会发生错误。

因此,这有效:

CREATE TABLE Match
(
    Id INTEGER PRIMARY KEY,
    WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
    LoserPersonId INTEGER NOT NULL
);

但是我确实需要两个“人”列来参考人表。

我提交了一个 错误报告 为此,但是同时我可以使用解决方法。有任何想法吗?

有帮助吗?

解决方案

我只是遇到了相同的问题,并创建了一个补丁。我也将其发布在您的 错误报告. 。对于其他人,您可以在这里找到补丁: http://pastebin.com/vhnptmqp.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top