为什么很多 PHP 项目从 SQLite 开始
SQLite 非常适合早期项目:零安装、文件即数据库、部署简单。用来做 MVP、内部工具、轻量系统特别顺手。但当数据量和并发上来后,就会开始碰到限制,比如写入锁、备份运维、多人协作与报表性能。
什么时候该升级到 MySQL
- 后台多人同时写入(订单、领券、记账)
- 你需要托管数据库(Hostinger / 云主机常见)
- 需要更强索引/统计/导出能力
- 运维需求:备份、监控、权限分离
步骤 1:冻结写入(避免数据漂移)
迁移前建议安排维护窗口,暂停写入操作,避免导出后数据继续变化导致对不上。
步骤 2:导出 SQLite 的表结构与数据
如果你有命令行权限:
sqlite3 data/app.db .schema > schema.sql
sqlite3 data/app.db .dump > dump.sql
如果没有命令行,也可以写一个 PHP 脚本用 PDO 把数据读出来生成 INSERT 语句。
步骤 3:处理类型差异(最容易踩坑)
SQLite 对类型很宽松,但 MySQL 更严格。常见转换:
INTEGER PRIMARY KEY→INT AUTO_INCREMENT PRIMARY KEYTEXT→VARCHAR(255)或TEXT- 日期时间如果存成 TEXT,建议改为
DATETIME
步骤 4:创建 MySQL 表并补齐索引
创建新数据库后,先导入整理好的 schema。并且为常查字段加索引(例如:user_id、created_at、status),否则看板会变慢。
步骤 5:安全导入数据
导入顺序建议:
- 基础字典表
- 用户表
- 交易/日志/审计记录
导入前后务必核对行数与关键统计(总金额、总记录数)。
步骤 6:改造 PHP PDO 连接(建议做成可切换)
把连接集中到一个配置文件,然后用环境变量切换数据库:
// config.php
return [
'db_driver' => 'mysql',
'db_host' => 'localhost',
'db_name' => 'scoryon',
'db_user' => 'user',
'db_pass' => 'pass',
];
步骤 7:验证关键流程
- 登录/权限
- 新增/编辑/删除
- 统计报表与导出
- 后台调整与审计日志
常见错误(避坑清单)
- 没加索引 → 看板统计变慢
- 字符集没统一(推荐 utf8mb4)
- 日期时间比较逻辑不同
- 没做导入前后数据核对
总结
“SQLite 起步 → MySQL 扩展”是非常聪明且现实的路线。只要迁移流程可复现、校验做扎实,就能在不破坏系统的前提下平滑升级。