宝塔PHP支持哪些数据库?MySQL与SQLite配置说明
时间:2026-05-20 14:44:00 457浏览 收藏
宝塔面板中的PHP支持MySQL与SQLite数据库,但二者本质迥异:MySQL是服务型关系数据库,SQLite是嵌入式文件型数据库,它们既不能跨库事务联动,也无法自动语法兼容,所谓“联动”实为应用层手动管理多数据源;配置关键在于确保PHP已启用mysqli、pdo_mysql、pdo_sqlite和sqlite3扩展,并严格注意DSN写法(SQLite必须用绝对路径且赋予www用户读写权限)、框架迁移适配(如Laravel需改写JSON字段为text、ThinkPHP需动态切换驱动)以及并发陷阱(SQLite的文件锁在高并发下极易报错),切勿将SQLite当作MySQL的简易替代品用于生产环境。

宝塔面板里 PHP 能连哪些数据库
宝塔本身不决定 PHP 支持哪些数据库,关键看它所安装的 PHP 版本是否启用了对应扩展。常见组合中,mysqlnd(MySQLi / PDO MySQL)、pdo_sqlite、sqlite3 这三者默认在宝塔一键部署的 PHP 环境中基本都已启用——但不是绝对,得手动确认。
容易被忽略的是:PHP 8.0+ 默认不再带 mysql(旧 mysql_* 函数),仅保留 mysqli 和 PDO MySQL;SQLite 方面,pdo_sqlite 和 sqlite3 扩展需同时开启才能完整支持 PDO::sqlite 和 SQLite3 类。
- 进宝塔 → 网站 → PHP 设置 → “配置文件” 旁点“安装扩展”,勾选
mysqli、pdo_mysql、pdo_sqlite、sqlite3 - 扩展装完后务必点“重载配置”,否则 PHP-FPM 不会加载新模块
- 用
php -m | grep -E 'mysql|sqlite'在终端验证是否生效
MySQL 与 SQLite 共存时的 PDO DSN 写法区别
同一套 PHP 代码里要切换 MySQL 和 SQLite,靠的是 PDO 构造时传入不同的 DSN(Data Source Name)。两者语法差异明显,写错一个字符就会报 PDOException: could not find driver 或 invalid data source name。
典型错误是把 SQLite 的路径写成相对路径(如 sqlite:app.db),而 PHP 运行用户(通常是 www)没有当前工作目录读写权限,导致连接失败。
- MySQL DSN 示例:
mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8mb4 - SQLite DSN 示例:
sqlite:/www/wwwroot/example.com/app.db(必须是绝对路径,且www用户有读写权限) - 别用
sqlite:./app.db或sqlite:app.db,PHP 工作目录不可控 - SQLite 文件所在目录需
chown www:www并设为755,文件设为644(首次写入时可能需要664)
在 Laravel / ThinkPHP 等框架中切换数据库驱动的实际操作
框架抽象了底层连接,但切换 MySQL ↔ SQLite 不只是改配置项那么简单。Laravel 的 DB_CONNECTION 设为 sqlite 后,迁移命令 php artisan migrate 会尝试建表,但 SQLite 不支持部分 MySQL 语法(如 JSON 字段、AUTO_INCREMENT 多字段、ENGINE=InnoDB),直接报错。
ThinkPHP 的 database.php 中若同时配了 type 为 mysql 和 sqlite,运行时只能生效一个——靠环境变量或条件判断切换,不能“联动”自动选。
- Laravel:SQLite 迁移前先清空
database/migrations/中含 MySQL 专属语法的语句(如$table->json()改成$table->text()) - ThinkPHP:用
Env::get('database.type')动态读取配置,避免硬编码 - 不要指望框架自动转换 SQL 方言,SQLite 就是轻量嵌入式库,不是 MySQL 替代品
- 测试阶段用 SQLite 快,上线必须切回 MySQL,别共用同一套 migration
为什么“MySQL 与 SQLite 联动配置”这个说法容易误导人
“联动”这个词在数据库语境里通常指事务跨库、视图联合查询或实时同步,但 MySQL 和 SQLite 之间不存在服务级通信协议,也没有中间件能真正让二者在一个事务里提交或回滚。所谓“联动”,实际只是 PHP 应用层根据业务逻辑分别打开两个连接,手动协调数据流向。
比如用户注册写 MySQL,日志记录写 SQLite,这不算联动,只是多数据源使用。真要做数据同步,得靠脚本定期导出导入,或监听 MySQL binlog 推送到 SQLite(成本远高于换用单库)。
最常被忽略的点:SQLite 是文件锁机制,高并发写入时容易触发 SQLSTATE[HY000]: General error: 5 database is locked,而 MySQL 的行级锁完全不在此列——别拿 SQLite 当 MySQL 的降级备选来压测。
本篇关于《宝塔PHP支持哪些数据库?MySQL与SQLite配置说明》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
441 收藏
-
427 收藏
-
112 收藏
-
345 收藏
-
108 收藏
-
144 收藏
-
463 收藏
-
190 收藏
-
384 收藏
-
127 收藏
-
295 收藏
-
457 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习