接口项目与普通Web项目数据库配置本质相同,均依赖.env统一配置、config/database.php驱动匹配、PHP扩展就绪及DB::connection()->getPdo()验证;多库需定义命名连接、模型绑定$connection属性,并通过--database指定迁移目标库。

接口项目和普通 Web 项目在数据库配置上没有本质区别,Laravel 的数据库连接机制完全复用同一套配置体系。关键在于确保环境变量准确、驱动就绪、连接可验证,且不因“只做 API”而忽略基础配置细节。
核心配置走 .env 文件
这是最常用也最推荐的方式,适用于绝大多数接口项目:
- 打开项目根目录下的 .env 文件,设置以下字段(以 MySQL 为例):
DB_CONNECTION=mysql<br>DB_HOST=127.0.0.1<br>DB_PORT=3306<br>DB_DATABASE=api_db<br>DB_USERNAME=api_user<br>DB_PASSWORD=secure_pass
- 如果使用 PostgreSQL,把
DB_CONNECTION改为pgsql,并确认已启用pdo_pgsql扩展;SQLite 则只需DB_CONNECTION=sqlite和DB_DATABASE=database/database.sqlite,其余 DB_ 变量全部删掉或注释; - 修改后务必运行
php artisan config:clear,否则缓存会掩盖新配置。
多库场景:定义命名连接
接口常需对接主业务库 + 日志库 + 统计库等,不能只靠默认 mysql 连接:
- 在 config/database.php 的
'connections'数组中新增一个键,比如'mysql_logs',完整填写 driver、host、database 等字段; - 所有敏感值必须通过
env()加载,例如'host' => env('DB_LOGS_HOST', '127.0.0.1'); - 在 .env 中添加对应前缀变量:
DB_LOGS_HOST、DB_LOGS_DATABASE等,避免与主库变量冲突; - 模型中指定连接:在
app/Models/ApiLog.php里加protected $connection = 'mysql_logs';。
连接验证不能跳过
接口项目容易忽略连通性测试,但线上报错往往卡在第一步:
- 运行
php artisan tinker进入交互环境; - 执行
DB::connection()->getPdo();—— 若返回 PDO 实例,说明默认连接正常; - 验证命名连接:
DB::connection('mysql_logs')->getPdo();; - 若抛出异常,优先检查用户名密码、远程访问权限(如 MySQL 的
GRANT是否允许从你的服务器 IP 登录)、防火墙是否放行端口。
注意迁移与 Seeder 的目标库
接口项目虽不渲染页面,但数据结构仍需通过迁移维护:
- 运行迁移时指定库:
php artisan migrate --database=mysql_logs; - Seeder 中若操作非默认库,需显式调用:
DB::connection('mysql_logs')->table(...)->insert(...); - 不要改动默认的
mysql连接配置——队列、通知、缓存等 Laravel 内部组件依赖它,改崩了会导致php artisan queue:work或邮件发送失败。











