PHP Laravel应用执行php artisan migrate迁移命令失败报错
故障根因
这个报错属于数据库连接阶段的主机名解析失败,和pdo_mysql扩展是否开启没有直接关系:PHP尝试连接名为mysql的数据库主机时,无法解析该主机名对应的IP地址,导致连接中断。
解决步骤
- 先确认命令行运行artisan时实际加载的PHP环境
打开命令行执行php --ini,查看返回结果中Loaded Configuration File对应的路径。你本地存在两套PHP环境(XAMPP内置PHP、独立安装的PHP8.1.5),大概率你之前修改的是XAMPP目录下的php.ini,但命令行执行artisan命令时调用的是独立安装的PHP,读取的是Program Files目录下的配置文件,导致修改不生效。 - 修正项目数据库配置
打开项目根目录的.env文件,找到数据库配置段,你当前DB_HOST配置项的值填的是mysql——这个值是Docker部署时使用的MySQL容器服务名,本地XAMPP环境不存在这个主机,必然解析失败。本地环境参考配置如下:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel8 DB_USERNAME=root DB_PASSWORD= # XAMPP默认MySQL root密码为空,如果你自己改过就填对应密码 - 清除Laravel配置缓存
改完配置后在项目根目录执行以下命令,避免旧缓存配置干扰:php artisan config:clear php artisan cache:clear - 验证扩展加载状态
命令行执行php -m,在输出的扩展列表中确认存在pdo_mysql项,如果不存在,就编辑php --ini查到的那个已加载的php.ini文件,移除extension=pdo_mysql前的分号注释,保存后重启命令行窗口即可。
如果你希望命令行默认调用XAMPP自带的PHP,可以编辑系统环境变量Path,删除独立PHP的路径
\Program Files\php-8.1.5-Win32-vs16-x64\,将XAMPP的PHP路径(默认是C:\xampp\php)添加到Path列表最顶部,保存后重启命令行生效。
内容的提问来源于stack exchange,提问作者itsME
相关产品推荐
相关产品推荐

