laravel 切换数据库需四步:一、配置 .env 中 db_connection 及对应凭证;二、确认 config/database.php 中 connections 键与驱动匹配;三、启用 php 扩展(如 pdo_mysql)并安装必要 composer 包(如 doctrine/dbal);四、用 php artisan tinker 和 db::connection()->getpdo() 验证连接。

如果您在 Laravel 项目中需要切换或初始化不同类型的数据库连接,必须正确配置环境变量与数据库服务参数。以下是针对 MySQL、PostgreSQL、SQLite 和 SQL Server 的具体配置步骤:
一、配置 .env 文件中的数据库连接参数
Laravel 使用 .env 文件统一管理数据库连接配置,每种数据库类型需设置对应驱动及连接凭证。系统根据 DB_CONNECTION 值加载相应配置块。
1、打开项目根目录下的 .env 文件。
2、将 DB_CONNECTION 设置为所需数据库类型:mysql、pgsql、sqlite 或 sqlsrv。
3、根据所选类型,填写对应字段:DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD;SQLite 可忽略主机与端口,仅需 DB_DATABASE 指向绝对路径文件;SQL Server 需确保 DB_PORT 为 1433(或实际监听端口)。
4、保存文件后运行 php artisan config:clear 清除配置缓存。
二、修改 config/database.php 中的连接定义
Laravel 的 database.php 配置文件定义了各数据库驱动的具体行为,.env 中的值通过 env() 函数注入。需确认该文件中对应连接器的键名与 .env 设置一致,并检查驱动类是否已注册。
1、打开 config/database.php 文件。
2、定位到 'connections' 数组,确认存在 mysql、pgsql、sqlite、sqlsrv 四个键。
3、检查每个键下的 'driver' 值是否匹配其名称,例如 pgsql 连接中 'driver' => 'pgsql',且 'url' 参数未覆盖关键字段。
4、若使用 SQL Server,确认 'sqlsrv' 块中 'prefix' 和 'strict' 设置符合 SQL Server 行为(如 'strict' 应设为 false)。
三、安装并启用对应数据库扩展与驱动包
Laravel 依赖 PHP 扩展与 Composer 包实现数据库通信。缺失扩展会导致连接失败,即使配置正确也无法建立会话。
1、MySQL:确认 PHP 已启用 pdo_mysql 扩展,无需额外 Composer 包。
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
2、PostgreSQL:启用 pdo_pgsql 扩展,并执行 composer require doctrine/dbal:^3.0(Laravel 9+ 推荐版本)。
3、SQLite:启用 pdo_sqlite 扩展,无需额外包。
4、SQL Server:启用 pdo_sqlsrv 或 pdo_odbc 扩展(Windows 下推荐 sqlsrv),并执行 composer require doctrine/dbal:^3.0。
四、验证数据库连接可用性
配置完成后需主动测试连接是否成功,避免迁移或查询时抛出异常。Laravel 提供 Artisan 命令与门面方式两种验证路径。
1、在终端执行 php artisan tinker 进入交互式控制台。
2、输入 DB::connection()->getPdo();,若返回 PDO 实例则连接成功。
3、对 PostgreSQL 或 SQL Server,可额外运行 DB::select('SELECT 1'); 验证查询通道。
4、退出 tinker 后,执行 php artisan migrate:status 查看迁移状态表是否可读。
五、处理 SQLite 文件路径与权限问题
SQLite 使用本地文件作为数据库,路径错误或写入权限不足将导致连接拒绝,此问题在部署环境中尤为常见。
1、确保 .env 中 DB_DATABASE 值为绝对路径,例如 /var/www/myapp/database/database.sqlite。
2、运行 ls -l /path/to/database.sqlite 检查文件是否存在且属主为 Web 服务器用户(如 www-data)。
3、若文件不存在,手动创建空文件并设置权限:touch database.sqlite && chmod 664 database.sqlite。
4、在 config/database.php 的 sqlite 连接块中,确认 'database' 键值未被 .env 中的相对路径覆盖。










