Laravel部署Vercel+Supabase PostgreSQL生产环境迁移报错:找不到pgsql驱动
解决Vercel生产环境Laravel连接Supabase时找不到pgsql驱动的问题
问题根源
Vercel默认的PHP运行环境没有启用PostgreSQL相关扩展(pgsql和pdo_pgsql),这是导致迁移时提示could not find driver pgsql的核心原因。
解决方案步骤
配置Vercel启用PostgreSQL扩展
在项目根目录创建或修改vercel.json文件,添加扩展配置:{ "functions": { "api/**/*.php": { "runtime": "vercel-php@0.7.2" } }, "config": { "php": { "extensions": ["pgsql", "pdo_pgsql"] } } }注意:
vercel-php的版本要和你项目使用的PHP版本匹配,比如PHP 8.1对应vercel-php@0.7.x,PHP 8.2对应更高版本,可根据实际情况调整。确认生产环境数据库配置
在Vercel的项目环境变量中配置正确的Supabase数据库参数(不要硬编码在代码里):DB_CONNECTION=pgsql DB_HOST=db.xxxxxx.supabase.co DB_PORT=5432 DB_DATABASE=postgres DB_USERNAME=postgres DB_PASSWORD=你的Supabase数据库密码替换
db.xxxxxx.supabase.co为你的Supabase实例地址,密码用Supabase控制台里的数据库密码。正确处理缓存并重新部署
本地执行php artisan config:clear清除配置缓存,然后将代码推送到Git仓库触发Vercel重新部署。不要在Vercel终端执行缓存清除命令,因为终端环境和生产运行环境的配置上下文不一致,部署时要确保缓存基于生产环境配置生成。验证扩展加载状态
可以在项目的api目录下创建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>部署后访问该文件,搜索
pgsql和pdo_pgsql,确认扩展已成功加载。如果仍未加载,检查vercel.json的配置是否正确,或者更换兼容的vercel-php版本。
内容的提问来源于stack exchange,提问作者teh bibi
相关产品推荐
相关产品推荐

