【问题标题】:Sqlite.Swift Ambiguous Column Name SwiftSqlite.Swift 不明确的列名 Swift
【发布时间】:2017-07-06 15:47:49
【问题描述】:

我的代码如下:

let assetTag = Expression<String>("asset_tag")


let query2 = mdm.select(mdm[assetTag],os, mac, lastReported)
                .filter(mdm[assetTag] != "ipad" && location == facility)
                .order(mdm[assetTag])
                .join(mdm, on: ewp[assetTag] == mdm[assetTag])



            let results2 = try! db.prepare(query2)

我收到错误消息:

致命错误:“试试!”表达式意外引发错误:不明确的列名:mdm.asset_tag(代码:1):文件/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-802.0.53/src/swift/stdlib/public/core /ErrorType.swift,第 182 行

我的数据库有两张表,一张叫 eWP,一张叫 MDM。两者都有一个名为 assets_tag 的列,所以我想通过执行 mdm[assetTag] 来选择正确的列,但它仍然会引发错误。

编辑

仍然无法解决问题。我按如下方式创建表:

let db = try Connection("\(path)/db.sqlite3")

        try db.run(ewp.create { t in
            t.column(assetTag)
            t.column(location)
            t.column(deviceStatus)

        })

        try db.run(mdm.create { t in
            t.column(assetTag)
            t.column(os)
            t.column(mac)
            t.column(lastReported)

        })

    }

出于某种原因,mdm[assetTag] 仍然说该列不明确,但只有 1 个这样的列。

【问题讨论】:

    标签: swift sqlite sqlite.swift


    【解决方案1】:

    找到答案。我自己加入了 mdm 表。我需要将连接更改为:

    .join(ewp, on: ewp[assetTag] == mdm[assetTag])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 2018-01-21
      • 2020-11-28
      • 2023-03-08
      • 1970-01-01
      • 2017-04-09
      • 2018-10-23
      • 1970-01-01
      相关资源
      最近更新 更多