代码之家  ›  专栏  ›  技术社区  ›  devuxer

dbmetal阻塞了sqlite中重复的外键引用-有什么想法吗?

  •  1
  • devuxer  · 技术社区  · 15 年前

    我一直在努力让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
    );
    

    但是我真的需要两个“person”列来引用person表。

    我提交了 bug report 但我需要一个解决办法。有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   FrozenCow    15 年前

    我也遇到了同样的问题,创建了一个补丁。我也把它贴在你的 bug report . 对于其他人,您可以在此处找到修补程序: http://pastebin.com/VhNptMqp .