无法通过Key Pair Authentication实现Flyway与Snowflake的连接求助
Flyway连接Snowflake密钥认证报错解决方案
核心问题定位
从调试日志能看到,最终生效的flyway.url是jdbc://app.eu-west-1.privatelink.snowflakecomputing.com/,缺失了snowflake://协议标识,导致Flyway无法识别对应的数据库驱动,从而抛出No database found to handle错误。
解决方案步骤
修正配置文件中的URL格式
检查所有加载的配置文件(C:\flyway\flyway-10.15.2\conf\flyway.conf和C:\Users\kxxs361\flyway.conf),确保flyway.url严格遵循Snowflake JDBC URL规范:flyway.url=jdbc:snowflake://xb44352.eu-west-1.snowflakecomputing.com/?db=ENT_MDM_RAW&warehouse=EDP_ENT_MDM_ANALYTICS_WH排查是否有其他配置文件覆盖了正确的URL,导致协议部分丢失。
修复私钥文件路径
Windows系统下路径需处理转义问题,将私钥路径修改为以下两种格式之一:flyway.jdbcProperties.private_key_file=\\Users\\kxxs361\\rsa_key.p8或使用正斜杠路径:
flyway.jdbcProperties.private_key_file=/Users/kxxs361/rsa_key.p8验证密钥对配置有效性
- 确认私钥文件
rsa_key.p8为未加密的PKCS#8格式(若加密,需额外添加flyway.jdbcProperties.private_key_passphrase=<你的密码>) - 验证公钥已关联到Snowflake用户
KXXS361@ASTRAZENECA.NET,执行Snowflake命令检查:
查看DESCRIBE USER KXXS361@ASTRAZENECA.NET;RSA_PUBLIC_KEY字段是否与你的公钥内容匹配。
- 确认私钥文件
确认Flyway驱动完整性
Flyway 10.15.2自带Snowflake JDBC驱动,无需额外安装。若自定义过驱动路径,需确保驱动jar包存在且版本兼容。
内容的提问来源于stack exchange,提问作者Sathish Kumar
相关产品推荐
相关产品推荐

