无法在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
相关产品推荐
相关产品推荐

