回答

收藏

如何在SQLite3和Rails 3.1中打开REGEXP?

技术问答 技术问答 100 人阅读 | 0 人回复 | 2023-09-13

我在Rails 3中使用SQLite3数据库有以下语句:$ K# U1 D: q6 ]0 Z
word = 'Hello'% w+ }* e# b1 F" |$ a# M
word_entry = Word.where("name REGEXP :word", {:word => "[[::]]"})8 p8 j5 S7 k8 c
但是,当在SQLite3下运行它时,我不断得到:
/ u/ z& {. C8 K# P) [4 {7 z* d$ a! A( L, |/ u
SQLite3 :: SQLException:没有这样的功能:REGEXP
9 V+ M# [6 Q( a/ G0 N) A

0 M- L" B* r3 f我在SQLite3文档中看到它确实支持REGEXP函数。在我的gemfile中,我有一行
0 m+ r2 |9 Y  g& u9 |; D3 {! U1 mgem 'sqlite3'. i' P# G6 Z$ a; E5 ^2 y: L
我的数据库配置文件如下所示:$ W. ]- V. q3 E
development:
8 a4 x( r( e+ a0 t  adapter: sqlite3
8 K* M0 k0 l' m5 p+ ?0 l& g) G& k  database: db/development.sqlite3
. ~4 _* U# T* d  pool: 5
- h4 r- w8 E* |4 A  Y  timeout: 5000
# N) e9 @, D- B, a, x4 Z. V有什么想法吗?/ o1 _: h0 W5 z( Q+ }5 ^6 Y
解决方案: 我最终找到了该解决方案。不幸的是,它不适用于Rails3。因此,使用正则表达式我最终切换到MYSQL而不是SQLite3。
6 `5 P& }( c8 |               
) i9 X2 e) M  X解决方案:
9 r4 C! s  j* A5 A; W( z9 Y& F                8 [  g+ O: y. C; H- k! q
6 l$ e) @) m& K. U: s- X/ A
& v" v# p$ c2 U, V6 K' }; }) y
                我遇到了同样的问题。我获取了解决方案中使用的代码,将其移植到与Rails 3+一起使用,并制成了易于使用的gem。我希望这有帮助。3 a! N( D2 }" a" w8 n( n$ E
https://github.com/sei-mi/sqlite3_ar_regexp
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则