CentOS 7 用户必看SQLite 升级指南:轻松将旧版 3.7.17 升级至3.41.2详细教程

本文主要是介绍CentOS 7 用户必看SQLite 升级指南:轻松将旧版 3.7.17 升级至3.41.2详细教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0.背景

编写此文是因为在 Linux 上跑项目时报错:

sqlite3.NotSupportedError: deterministic=True requires SQLite 3.8.3 or highe(此时已经安装了 python3)。
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "(": syntax error
[SQL: SELECT anon_1.document_id AS anon_1_document_id 
FROM (SELECT document.id AS document_id, row_number() OVER (ORDER BY document.id) AS rownum 
FROM document) AS anon_1 
WHERE rownum % 10000=1]

查询之后发现是因为 centos 上的 sqlite3 版本过低导致。

去验证一下:在 centos 上进入 python,可以看到 sqlite3 的版本为 3.7.17。

Python 3.8.12 (default, Jun 21 2019, 00:36:41)
[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.7.17'
>>> exit()

原因已经找到,下面开始执行。

1、下载、编译、安装新版 [SQLite]

1.1 下载新版 sqlite

  • 首先去官网下载对应版本

  • 官网 https://sqlite.org/download.html

(1)下载前需要建立一个文件夹,用于放置压缩包。此处选择 / home 为主目录,可以根据自身习惯更改下载存储地址。

mkdir /home/tools/sqlite3

(2)使用 wget 下载

到 SQLite 官网的下载页面:https://sqlite.org/download.html 这里是最新的版本。
在这里插入图片描述

1.2 历史版本下载

  • 3.41.2版本 https://www.sqlite.org/cgi/src/info/0d1fc92f94cb6b76
  • 全部版本 https://www.sqlite.org/cgi/src/taglist
    step1:挑选版本: 以3.41.2为例
    在这里插入图片描述
    step2: 进入下载链接,选则为Classic View

在这里插入图片描述
点击[0d1fc92f]

step3: 选择下载版本则可

在这里插入图片描述
右击复制下载链接

cd /home/tools/sqlite3  #切换到下载路径
wget https://www.sqlite.org/cgi/src/zip/0d1fc92f/SQLite-0d1fc92f.zip  #执行下载

等待下载完毕即可

step4: 解压

unzip SQLite-0d1fc92f.zip

解压后可以看到有新的文件夹:SQLite-0d1fc92f,进入该目录进行 sqlite3 的编译和安装。
在这里插入图片描述

cd SQLite-0d1fc92f

1.3. 编译和安装

  • (1)新建安装目录(根据自己习惯选择安装路径)
mkdir /usr/local/sqlite3.42
  • (2)编译
./configure --prefix=/usr/local/sqlite3.42/

固定语法,‘–prefix’后接安装路径。结束时提示:Complete! 即可

  • (3)安装
make clean   # 清除缓存
make && make install  # 安装

提示:Successfully… 即可,否则清除缓存后,重新编译

以上述方式安装后,会把编译好的二进制文件安装到/usr/local/sqlite3.42/lib, 把头文件sqlite3.h sqlite3ext.h安装到/usr/local/sqlite3.42/include,我们需要知道这两个路径。

  • (4)建立软连接(快捷方式)
cd /usr/bin   # 切换到bin路径
ls -la sqlite*  # 查看sqlite已经存在的软连接
若提示:ls: cannot access sqlite*: No such file or directory。则还未建立软连接,直接执行下面的代码,建立软连接即可
ln -s /usr/local/sqlite3.42/bin/sqlite3 /usr/bin/sqlite3

注:其中/usr/local/sqlite3.42/bin/sqlite3为 sqlite3 的安装路径下的 bin 路径中的 sqlite3,/usr/bin/sqlite3为固定位置

若显示
在这里插入图片描述

需要先删除该软连接,再新建

rm -rf sqlite3   # 删除
ln -s /usr/local/sqlite3.42/bin/sqlite3 /usr/bin/sqlite3   # 新建
ls -la sqlite*  # 查看软连接
sqlite3 --version  # 查看版本
python
import sqlite3  
print(sqlite3.sqlite_version)

最终效果为

在这里插入图片描述

  • (5)配置系统 lib 库
    终端运行
echo "/usr/local/sqlite3.42/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig

2、卸载 python3

如果上述不行,

因为 sqlite3 是在 python3 安装时进行连接的,我的云服务器已经安装过了,所以需要卸载,如果还没有安装 python3 的,可以跳过这一步。

注:此处仅删除 python3,尽量别删除原装的 python2.7.5,因为 centos7 有一些命令是依赖 2.7.5 的。

whereis python3 |xargs rm -frv   # 此为强制删除,也可以使用yum命令删除

3、下载、编译和安装 Python3

3.1. 下载

下载方法和 sqlite3 的下载相似。本文安装的 python3.8.12 版本,官网地址为:https://www.python.org/ftp/python/3.8.12/

mkdir /home/tools/python3    # 新建下载存储路径
cd /home/tools/python3    # 切换到存储路径
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tar.xz  # 使用wget直接下载

同样的,也可以在本地下载之后,通过 ftp 上传。

tar -zxvf Python-3.8.12.tgz  # 解压

解压之后可以看到多了一个文件夹,直接切换过去

cd Python-3.8.12/

3.2. 编译安装

  • (1)安装

编译安装之前建议在 / usr/local 路径下建立安装路径(根据自身习惯选择)

mkdir /usr/local/python3

原本 python3 的编译为下面的方法,但是,没有加参数的默认安装,python 会自动导入原版本的 sqlite3.7.17,

cd /home/tools/python/Python-3.8.12/   # 切换到解压后的路径
./configure --prefix=/usr/local/python3  # 编译,‘--prefix’后接安装路径
make clean   # 清除缓存
make && make install   # 安装 

将上述代码修改为:

cd /home/tools/python/Python-3.8.12/   # 切换到解压后的路径
# 编译,‘--prefix’后接安装路径,其中LD_RUN_PATH和LDFLAGS为sqlite3的二进制文件位置路径,CPPFLAGS是头文件的位置路径。上面安装sqlite3时已经提到。
LD_RUN_PATH=/usr/local/sqlite3.42/lib/ ./configure LDFLAGS="-L/usr/local/sqlite3.42/lib" CPPFLAGS="-I/usr/local/sqlite3.42/include"  --prefix=/usr/local/python3/LD_RUN_PATH=/usr/local/sqlite3.42/lib/ make  # 编译时将sqlite3的二进制文件路径添加到动态链接库的搜索路径中
make clean   # 清除缓存
make && make install  # 安装
  • (2)建立软连接(快捷方式)

建立方法与 sqlite3 的软连接建立方式相同

ls -la python*   # 查看python已存在的软连接

一般情况下,如果是新建立的系统,会存在以下三个软连接

以上软连接不做更改(因为很多系统命令会依赖 python2.7),直接新建一个 python3 的软连接即可

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

最终效果

至此,sqlite3 和 python3 已经安装并且连接好了,可进行如下验证

[root@iZf8z170cg4zcnds9u2p10Z bin]# python3   # 进入python3
Python 3.8.12 (default, Jun  5 2023, 16:00:05) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> sqlite3.sqlite_version
'3.42.0'
>>>exit()

可以看到,其中 python 版本为 3.8.12,并且 python3 内的 sqlite3 版本为 3.42.0,升级成功

参考链接:

https://blog.csdn.net/TAYLOR1219070261/article/details/131064076

https://blog.csdn.net/u012940672/article/details/122452092

这篇关于CentOS 7 用户必看SQLite 升级指南:轻松将旧版 3.7.17 升级至3.41.2详细教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/536478

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir