問題
報(bào)錯(cuò):
sqlite3.DatabaseError: malformed database schema(is_transient) - near "where": syntax error
原因:
sqlite3版本太低杯巨,下面命令查看python用的sqlite3版本
import sqlite3
sqlite3.sqlite_version
顯示sqlite3的版本是3.7
處理
- 更新sqlite3
- 重新安裝python
(我這里,如果只安裝新版本的sqlite3,python的sqlite3還是舊的。所以我這里重裝了python)
步驟
更新sqlite3
- 下載sqlite-autoconf版本的臂痕,https://www.sqlite.org/download.html
- 安裝sqlite
tar -xzvf sqlite-autoconf-3380500.tar.gz
cd sqlite-autoconf-3380500
./configure
make install
重新安裝python
- 下載python3奏篙,https://www.python.org/ftp/python/
- 重裝python3,要加LD_RUN_PATH貌矿,因?yàn)樾卵b的sqlite3庫文件在/usr/local/lib,不加LD_RUN_PATH找不到新的庫罪佳,會(huì)導(dǎo)致重裝python3后任然用的舊版sqlit3
tar -xzvf Python-3.9.7.tgz
cd Python-3.9.7
LD_RUN_PATH=/usr/local/lib ./configure --prefix=/usr/local/python3 --with-openssl=/usr/lib/openssl
LD_RUN_PATH=/usr/local/lib make && LD_RUN_PATH=/usr/local/lib make install
- 替換掉舊的python3
mv /usr/bin/python3 /usr/bin/python3_old
mv /usr/bin/pip3 /usr/bin/pip3_old
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3
測試更新成功
import sqlite3
sqlite3.sqlite_version
sqlite3更新到了3.38.5逛漫,更新成功
image.png