本ブログはアフィリエイト広告を利用しています。

SQLite3バージョンアップ

SQLite3のテーブルが存在しない場合作成するっていう “create table if not exists~” がエラーで実行できませんでした。どうやらCentOS7のSQLite3のバージョンが3.7.xxで古かったようです。
開発機の方はv3.29.0だったのですが最初なんで動かないのかわかりませんでした。
バージョン差に気づいてとりあえず2020/5/12時点の最新のv3.31.1を入れることにしました。

SQLite3バージョンアップ手順

バージョンアップの手順はこちらを参考にしました。
簡単に手順のみ抜き出します。

$ wget https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz
$ tar xvfz sqlite-autoconf-3310100.tar.gz 
$ cd sqlite-autoconf-3310100 
$ ./configure --prefix=/usr/local 
$ make 
$ sudo make install 
$ /usr/local/bin/sqlite3 --version 
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 
$ /usr/bin/sqlite3 --version 
3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668 
$ sqlite3 --version 
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6 
$ sudo mv /usr/bin/sqlite3 /usr/bin/sqlite3_old 
$ sudo ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3 
$ vi ~/.bashrc 
# 以下を追記する 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Pythonからバージョン確認

SQLite3はPythonから使用していたのでPythonでのバージョンを確認します。

python3
Python 3.7.4 (default, Aug 11 2019, 10:43:21)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.31.1'

systemd 環境変数

これでバージョンは上がったのですが、一つ問題が出ました。
作成したアプリはsystemdで起動していたのですがそこから起動するとバージョンが前のままなのです。
環境変数がうまく設定されていないようなのでsystemdのユニットファイルに環境変数を設定します。まずは環境変数設定用のファイルを作成します。

$ vi /etc/sysconfig/xxx.env
# 以下を記載
LD_LIBRARY_PATH=/usr/local/lib

次に/etc/systemd/systemにあるxxx.serviceを開き、[Service]に “EnvironmentFile=/etc/sysconfig/xxx.env” を追加します。

[Unit]
Description = nanana

[Service]
User=root
EnvironmentFile=/etc/sysconfig/xxx.env
WorkingDirectory = /home/nanana/nonono/
ExecStart = /usr/local/bin/python3 /home/nanana/nonono/python.py
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

これで $ systemctl restart xxx.service を実行すれば v3.31.1 のSQLite3を使用できます。

コメント

タイトルとURLをコピーしました