You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在PlanetScale数据库上执行Laravel迁移,请求帮助

解决Laravel连接PlanetScale数据库迁移报错问题

问题分析

从报错信息failed loading cafile stream: '/etc/ssl/certs/cacert.pem'可明确核心问题:SSL证书路径配置错误。你在Windows本地环境中使用了Linux系统的证书路径/etc/ssl/certs/ca-certificates.crt,但Windows不存在该路径,导致PDO无法加载SSL证书,最终数据库连接失败。

解决方案

1. 获取SSL证书文件

下载官方根证书文件cacert.pem,将其放置到Laravel项目根目录或你指定的本地文件夹中。

2. 修正.env文件的证书路径

将MYSQL_ATTR_SSL_CA的值修改为本地cacert.pem的实际路径,Windows路径需注意格式:

  • 用正斜杠:MYSQL_ATTR_SSL_CA=C:/Users/Vaibhav Patil/Desktop/vcode/Laravel_New_Project1/cacert.pem
  • 或转义反斜杠:MYSQL_ATTR_SSL_CA=C:\\Users\\Vaibhav Patil\\Desktop\\vcode\\Laravel_New_Project1\\cacert.pem

完整的.env数据库配置示例:

DB_CONNECTION=mysql
DB_HOST=ap-south.connect.psdb.cloud
DB_PORT=3306
DB_DATABASE=practicedb
DB_USERNAME=<username-they-gave>
DB_PASSWORD=<password-they-gave>
MYSQL_ATTR_SSL_CA=C:/Users/Vaibhav Patil/Desktop/vcode/Laravel_New_Project1/cacert.pem

3. 配置数据库SSL选项(推荐)

打开config/database.php,找到mysql连接配置,添加SSL相关选项:

'mysql' => [
    // 保留原有配置
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false, // PlanetScale需关闭证书验证
    ]) : [],
],

4. 测试并执行迁移

  • 先验证数据库连接:php artisan db:connect
  • 连接正常后执行迁移:php artisan migrate

额外检查项

  • 确认本地PHP环境已启用pdo_mysql和openssl扩展
  • 检查PlanetScale数据库的IP白名单,确保你的本地IP已被允许访问

内容的提问来源于stack exchange,提问作者Vaibhav K. Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:12:46