laravelapi新手如何配置数据库_laravel.env数据库配置【教程】

数据库配置写在 .env 里,不是 config/database.php

很多人一上来就改 config/database.php,结果改了没用——Laravel 默认优先读 .env 文件里的值,config/database.php 只是兜底和拼接逻辑。你改配置,必须先确认 .env 是否生效。

实操建议:

APP_ENV=local 必须设为 local 或 staging 等非 production 值,否则 Laravel 可能跳过重载 .env检查 .env 文件是否被 Git 忽略(.gitignore 里通常有 .env),避免误提交或本地没生效改完 .env 后运行 php artisan config:clear,否则缓存会掩盖修改DB_CONNECTION=mysql 要和实际驱动一致;如果用 PostgreSQL,这里得是 pgsql,不能只改下面的 host/port

DB_HOST 别填 localhost,Docker 或 Homestead 下大概率连不上

本地开发用 Docker、Valet、Homestead 时,localhost 指的是容器/虚拟机自身,不是宿主机的 MySQL。常见错误现象:启动 API 报错 SQLSTATE[HY000] [2002] Connection refused。

实操建议:

Docker 环境下,DB_HOST 填服务名,比如 mysql(对应 docker-compose.yml 里 service 的名字)Homestead/Valet 用 127.0.0.1,而不是 localhost(避免 socket 连接干扰)Mac 上用 MAMP 或 Sequel Ace 直连,确认端口是不是默认的 3306;MAMP 常用 8889,这时要同步改 DB_PORT=8889密码含特殊字符(如 @、/)会导致 URL 解析失败,用 DB_PASSWORD 单独配比写进 DB_URL 更稳

API 项目别漏掉 DB_DATABASE 和迁移前的数据库手动创建

Laravel 不会自动建库,php artisan migrate 报 Database does not exist 就是因为这个。新手常以为“跑 migrate 就行”,结果卡在第一步。

实操建议:

MySQL 命令行执行 CREATE DATABASE <code>your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;,别依赖工具点点点DB_DATABASE 值必须和你创建的库名完全一致(区分大小写,Linux 下尤其注意)用 DB_USERNAME 登录 MySQL 控制台,手动执行 SHOW DATABASES; 验证库是否存在、权限是否够如果用 SQLite,DB_DATABASE 是路径,比如 database/database.sqlite,确保目录存在且可写

调试时用 php artisan tinker 直接测连接,比反复启 API 快得多

API 报 500 错误,不一定是路由或控制器问题,很可能是数据库根本没连上。与其看日志猜,不如直接进交互环境验证。

实操建议:

运行 php artisan tinker,然后输入 DB::connection()->getPdo(); —— 成功返回 PDO 实例,失败抛异常,信息比 Web 请求清晰得多如果报 SQLSTATE[HY000] [1045] Access denied,重点查 DB_USERNAME 和 DB_PASSWORD 是否输错,空格、换行容易藏在复制粘贴里加 DB_LOG=true 到 .env,再跑一次 tinker + 查询,就能看到完整 SQL 和绑定参数,方便定位慢查询或字段缺失

环境变量加载顺序、host 解析路径、数据库权限粒度——这些地方没有报错提示,但只要错一个,整个 API 就静默挂掉。配数据库不是填完就完事,得逐层确认每一步的实际效果。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。