SQLite执行.dbinfo需-DSQLITE_ENABLE_DBPAGE_VTAB编译选项如何开启
sqlite> .dbinfo the ".dbinfo" command requires the -DSQLITE_ENABLE_DBPAGE_VTAB compile-time options
什么是-DSQLITE_ENABLE_DBPAGE_VTAB编译时选项
这是SQLite源码编译阶段的预处理器定义参数,作用是启用SQLite内置的dbpage虚拟表模块。.dbinfo元命令需要依赖这个虚拟表读取数据库底层页结构、文件头元数据等信息,才能输出对应的数据库统计结果。macOS系统预装的sqlite3默认没有开启该编译选项,因此运行.dbinfo会触发上述报错。
macOS环境开启该选项的操作方法
方法1:通过Homebrew编译安装(推荐)
如果你使用Homebrew包管理器,可直接在安装SQLite时指定开启该选项,执行命令:
brew install sqlite --with-dbpage-vtab
安装完成后需要将Homebrew的SQLite路径加入环境变量优先级,避免调用系统自带的版本:
- 如果你使用zsh(macOS Catalina及以后默认shell),执行:
# Apple Silicon芯片Mac执行下面这行 echo 'export PATH="/opt/homebrew/opt/sqlite/bin:$PATH"' >> ~/.zshrc # Intel芯片Mac请替换为下面这行 # echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.zshrc source ~/.zshrc - 如果你使用bash,执行:
# Apple Silicon芯片Mac执行下面这行 echo 'export PATH="/opt/homebrew/opt/sqlite/bin:$PATH"' >> ~/.bash_profile # Intel芯片Mac请替换为下面这行 # echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.bash_profile source ~/.bash_profile
方法2:手动编译SQLite源码
如果不想用Homebrew,可直接编译官方源码开启选项:
- 下载最新版本的SQLite源码压缩包
- 解压后进入源码目录,执行配置命令时传入编译参数:
CFLAGS="-DSQLITE_ENABLE_DBPAGE_VTAB" ./configure --prefix=/usr/local - 执行编译和安装:
make -j$(sysctl -n hw.ncpu) sudo make install
验证是否生效
新开终端窗口执行以下命令验证:
sqlite3 :memory: ".dbinfo"
如果输出数据库的页大小、编码等信息则说明配置成功。
内容的提问来源于stack exchange,提问作者user14427500
相关产品推荐
相关产品推荐

