Laravel部署到Heroku连接Azure数据库报unsupported driver[https]如何解决
错误原因
你配置的DATABASE_URL默认值是Azure phpMyAdmin管理后台的网页地址,并非MySQL服务的程序连接地址。Laravel解析数据库连接URL时识别到https前缀,尝试调用不存在的https数据库驱动,直接触发了该报错。
解决步骤
- 第一步:获取Azure MySQL实例的正确连接参数
登录Azure控制台,进入你部署的MySQL服务详情页,找到连接参数板块,复制官方提供的数据库主机地址、端口、数据库名、用户名、密码,不要使用phpMyAdmin的页面地址作为连接配置。 - 第二步:修正
database.php配置
首先修正语法错误,你当前配置中'driver' => 'mysql'末尾缺少逗号,会导致配置解析异常。其次建议删除mysql配置块中的url项,或者将该项的默认值设为空字符串,因为你已经单独配置了host、port、用户名密码等参数,不需要通过URL统一配置,避免环境变量冲突:'mysql' => [ 'driver' => 'mysql', // 补全逗号 // 删掉下面这行,或者改为'url' => env('DATABASE_URL', ''), // 'url' => env('DATABASE_URL','https://firstsqlaap.scm.azurewebsites.net/phpMyAdmin/db_structure.php?server=1&db=localdb&token=51b0b3471e798a712e129bcd1ebe5b01'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '53082'), 'database' => env('DB_DATABASE', 'localdb'), 'username' => env('DB_USERNAME', 'user'), 'password' => env('DB_PASSWORD', 'pass'), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], - 第三步:配置Heroku环境变量
进入Heroku应用的Settings页面,找到Config Vars板块,添加/修改以下变量:- 替换
DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD为你从Azure拿到的正确参数 - 新增
MYSQL_ATTR_SSL_CA,值设为/etc/ssl/certs/ca-certificates.crt,适配Azure MySQL强制SSL连接的要求 - 如果存在
DATABASE_URL变量请直接删除,避免优先级高于单独配置的参数导致报错
- 替换
- 第四步:验证扩展依赖
在composer.json的require块中添加"ext-pdo_mysql": "*",确保Heroku部署时自动启用PDO MySQL扩展,不会出现驱动缺失问题。
额外说明
你不需要创建迁移文件,只要数据库连接参数正确,已有的Azure数据库可以直接正常读写,SESSION_DRIVER设为database的配置也可以正常生效,不会再出现419错误。
内容的提问来源于stack exchange,提问作者Twinkle
相关产品推荐
相关产品推荐

