僕は発展途上技術者

mysql と sqlite3 のどちらでも動作するよう find 文を書く方法

rails でつまずいた点をメモっておきます。


mysql で動いていた開発環境を、rails 2.0 以降デフォルトの DB となった sqlite3 にスイッチしたところ、



SQLite3::SQLException: no such column: true: SELECT * FROM some_tables WHERE (some_column = true) ORDER BY created_at DESC LIMIT 1


のようなエラーがでるようになった。


» http://www.ruby-forum.com/topic/142120#630779


を参考にして、



SomeTable.find(:first, :conditions => 'some_column = true'


となっていた部分を



SomeTable.find(:first, :conditions => ['some_column = ?', true]


と書き換えることにより、mysql でも sqlite3 でも動くようになりました。


mysql では boolean は true と false ですが、sqlite3 では 1 と 0 だからということなのですね。


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ