※バージョン情報が誤っていたので訂正しました…大変失礼いたしました。。。。
開発環境
Rails 6.1.4
ruby 2.6.3
目次
- エラー全文
- 対処法
エラー全文
アプリケーション作成後、rails s
でアプリケーションを起動。
サイトアクセス時、に下記エラーが発生。
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
これで再度アプリを起動すると、、、無事にエラー解消できました!
お疲れ様でした!
あくまで備忘録なので足りない説明等多々あるかと思います。
行き詰まった際の助けになれば幸いです。