0
1

More than 1 year has passed since last update.

Rails エラー「Runtime Error Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8」の対処法

Last updated at Posted at 2022-07-10

※バージョン情報が誤っていたので訂正しました…大変失礼いたしました。。。。

開発環境

Rails 6.1.4
ruby 2.6.3

目次

  • エラー全文
  • 対処法

エラー全文

アプリケーション作成後、rails sでアプリケーションを起動。
サイトアクセス時、に下記エラーが発生。

rails1.png

AmazonLinux2にはsqlite3のバージョン3.7がデフォルトでインストールされており、
これがyumで利用しているらしく、削除することはできません。
しかし、Rails6を動かすにはsqlite3のバージョン3.8以上が必要なので、
バージョンが古い!とエラーが出ている、、、というわけです。

対処法

既存のSQLiteはそのままで、3.8以上のSQLiteを別途インストールします。
sqliteの最新バージョンはこちらで確認可能です。

ターミナル
# アプリ用のユーザのホームディレクトリで作業(私は)
$ cd /home/appuser 
# 3.39.0をダウンロード
$ wget https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz
$ tar xzvf sqlite-autoconf-3360000.tar.gz
$ cd sqlite-autoconf-3360000/
# もとから入っているsqliteと競合しないように /opt/sqlite/sqlite3にインストールする
$ ./configure --prefix=/opt/sqlite/sqlite3
$ make
$ sudo make install
# バージョン確認
$ /opt/sqlite/sqlite3/bin/sqlite3 --version
3.36.0 2022-07-01 14:12:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b

アプリで使用するSQLiteとして、今回インストールしたSQLiteをgemで指定する。

ターミナル
# アプリ用のディレクトリに移動
$ cd /var/www/rails/web_app 
# gemで新しいSQLiteを指定
$ gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include \
   --with-sqlite3-lib=/opt/sqlite/sqlite3/lib
# 指定が正しくできているか確認
$ irb
irb(main):001:0> require 'sqlite3'
=> true
irb(main):002:0> SQLite3::SQLITE_VERSION
=> "3.36.0"  # 成功
irb(main):003:0> exit

新しいSQLiteにパスを通す必要があるので以下作業実施。

ターミナル
$ echo 'export LD_LIBRARY_PATH="/opt/sqlite/sqlite3/lib"' >> .bash_profile
$ source .bash_profile

これで再度アプリを起動すると、、、無事にエラー解消できました!

6a459a54e624a5a2d3aa3de1866cc763.png

お疲れ様でした!
あくまで備忘録なので足りない説明等多々あるかと思います。
行き詰まった際の助けになれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1