【问题标题】:Mysql2::Error: You have an error in your SQL syntaxMysql2::Error: 你的 SQL 语法有错误
【发布时间】:2012-03-13 10:38:09
【问题描述】:

我刚刚使用 this 将我的 rails 应用程序数据库从 sqlite3 切换到 mysql2,这似乎可以正常工作。

但是当我启动我的应用程序时,我现在得到了这个:

A ActionView::Template::Error occurred in pages#dashboard:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== 1) LIMIT 20 OFFSET 0' at line 1: SELECT `tickets`.* FROM `tickets` WHERE (archived == 1) LIMIT 20 OFFSET 0
activerecord (3.0.3) lib/active_record/connection_adapters/abstract_adapter.rb:202:in `log'

不确定在哪里可以正常工作。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • 当我导航到 rails admin 并尝试编辑我的一个用户时出现此错误。您有什么想法吗?

标签: mysql ruby-on-rails ruby-on-rails-3 mysql-error-1064 mysql2


【解决方案1】:

试试这个:

# Notice single = vs ==
WHERE (archived = 1)

更新 结束了

scope :is_archived, where('archived != ?', 1)
scope :not_archived, where('archived = ?', 1)

这很好用。谢谢!

【讨论】:

  • 像这样:scope :not_archived, where('archived == ?', 1)??
  • 范围:not_archived, where('archived = ?', 1)
  • 或者,范围 :not_archived, where(:archived => 1)
  • 我想做什么的时候:scope :is_archived, where('archived != ?', 1)?
  • 该死,对不起,我只看mysql语法。我无法确认 ruby​​ 构造,但我知道 mysql 上下文中的 == 不正确。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多