В моем проекте у меня разные временные фрагменты. Эти срезы времени имеют такие имена, как «00-04», «04-08», «08-12», «12-16», «16-20» и «20-24» и многое другое. Я хотел все время нарезать объекты с указанными именами. Итак, я запрограммировал следующее:SQLite3 :: SQLException: нет такой функции: REGEXP rails rspec
time_slice_names = ["00-04", "04-08", "08-12", "12-16", "16-20", "20-24"]
time_slices = TimeSlice.where('name REGEXP ?', time_slice_names.join("|"))
time_slices дает мне правильные объекты в моем режиме разработки. Тем не менее, когда я запускаю тест, у меня есть ошибки, как:
ActiveRecord::StatementInvalid:
SQLite3::SQLException: no such function: REGEXP: SELECT "time_slices".* FROM "time_slices" WHERE (name REGEXP '00-04|04-08|08-12|12-16|16-20|20-24')
Мой database.yml выглядит следующим образом:
development:
adapter: mysql2
database: development
encoding: utf8
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
Я знаю, что моя тестовая среда использует sqlite3, тогда как моя среда разработки использует mysql2. В любом случае, где я могу выполнить вышеупомянутый запрос как для mysql2, так и для sqlite3?
Я считаю, что лучше использовать тот же адаптер DB для Dev/тест/прод. Однако проверьте [this] (http://stackoverflow.com/questions/5071601/how-do-i-use-regex-in-a-sqlite-query) вне (игнорируйте принятый ответ). – ndn
@sadiksha У меня тоже мало знаний о части SQLite. Поэтому, если он работает с MySQL, а не с SQLite, n ошибка явно говорит о том, что SQLite не реализовал эту функцию regexp. Поэтому лучше использовать тот же Db для всех envs, что и ndn. – Autodidact
Спасибо, и @ndn, для этого случая я использовал запрос для обработки массивов. Я обязательно рассмотрю ваше предложение. –