【问题标题】:"Row value misused" error in SQLite databaseSQLite 数据库中的“行值滥用”错误
【发布时间】:2017-02-08 20:29:39
【问题描述】:

我从一个 sqlite3 查询中得到一个错误,我找不到任何参考资料。谷歌搜索该字符串让我深入了解 SQLite 代码本身,这太不透明了,我无法判断它的正面或反面。

表架构:

CREATE TABLE quote (
    seqnum INTEGER,
    session STRING,
    timestamp_sip INTEGER,
    timestamp_1 INTEGER,
    market_center STRING,
    symbol STRING,
    bid_price INTEGER,
    bid_lots INTEGER,
    offer_price INTEGER,
    offer_lots INTEGER,
    flags INTEGER,
    PRIMARY KEY (symbol, seqnum) );

查询:

select (seqnum, session, timestamp_sip, timestamp_1, market_center, symbol)
    from quote
    where symbol = 'QQQ';

错误:

错误:行值被滥用

我不知道如何在这里进行。表中有大量与查询匹配的数据:

sqlite> select count(*) from quote where symbol = 'QQQ';
2675931

任何人都可以在这里提供任何指导吗? Sqlite 版本为 3.16.2。

【问题讨论】:

标签: sqlite


【解决方案1】:

没关系。选择列周围的括号(从复制/粘贴中留下)是问题所在。糟糕的错误信息,也许。但我的错。

【讨论】:

  • 啊。在INSERT INTO X (c1, c2...) SELECT... 声明中犯了完全相同的错误。这是一个可怕的错误。看起来你有很多公司。
  • ORDER BY (sections.orderId, items.orderId) 相同的问题。您的回答为我指明了正确的方向。 :)
  • 是的,那个错误信息让我失望了。我猜它会将括号解释为文字值?
  • 它解决了这个问题。谢谢。请将其标记为答案。
【解决方案2】:

我在使用 Rails 5.2 应用程序时也遇到过类似情况。

就我而言,我试图为应用程序中的模型编写搜索查询:

def self.search(params)
  applications = all.order('created_at DESC') # for not existing params args
  applications = applications.where("cast(id as text) like ?, email like ?, first_name like ?, last_name like ?, appref like ?", "#{params[:search]}", "%#{params[:search]}%", "#{params[:search]}", "#{params[:search]}", "#{params[:search]}",) if params[:search]
  applications
end

问题是我使用逗号 (,) 来分隔搜索参数,我只是改用 OR 来纠正:

def self.search(params)
  applications = all.order('created_at DESC') # for not existing params args
  applications = applications.where("cast(id as text) like ? OR email like ? OR first_name like ? OR last_name like ? OR appref like ?", "#{params[:search]}", "%#{params[:search]}%", "#{params[:search]}", "#{params[:search]}", "#{params[:search]}",) if params[:search]
  applications
end

就是这样。

我希望这会有所帮助

【讨论】:

    【解决方案3】:

    我从查询中删除了括号,它对我有用:from SELECT (column1, column2, ...) FROM table to SELECT column1, column2, ...来自表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多