Rails 集成 SQLite3 时,如果只是简单的用 gem 或者 bundler 安装 sqlite3 很可能出现下面这个问题:
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.
检查系统 sqlite3 版本时也是完全没问题的:
$ sqlite3 --version
3.40.1 2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24
原因是我们使用 bundler 安装 sqlite3 时使用的是 Rails 默认提供的 SQLite3,因此我们需要在安装时换成自己安装的 SQLite3 库。
首先下源码,编译安装。
然后重装 sqlite3 gem 包:
bundle config build.sqlite3 --with-sqlite3-include=/opt/sqlite/sqlite3/include --with-sqlite3-lib=/opt/sqlite/sqlite3/lib
bundle install
over
评论区