MacOS下使用Flyway运行Snowflake脚本时遇架构识别错误
解决MacOS上Flyway连接Snowflake报错“Unable to determine Original Schema for the Connection”
以下是针对该问题的排查和解决步骤:
1. 统一Flyway版本
Mac通过brew安装的Flyway可能和Windows上使用的版本不一致,版本差异会导致驱动或逻辑兼容问题:
- 查看Mac上的Flyway版本:
flyway -v - 查看Windows上的Flyway版本,将Mac版本调整为一致:
- 降级/升级brew版Flyway:
brew install flyway@<版本号>,然后关联到该版本:brew link flyway@<版本号> --force
- 降级/升级brew版Flyway:
2. 显式指定默认Schema
确保Flyway配置中明确指定目标Schema,避免自动识别失败:
- 在
flyway.conf配置文件中添加:
注意:Snowflake的Schema名称区分大小写,如果创建时用双引号指定了小写名称,这里也要带双引号。flyway.defaultSchema=YOUR_TARGET_SCHEMA - 或者在执行命令时直接指定:
flyway migrate -defaultSchema=YOUR_TARGET_SCHEMA
3. 检查并设置用户默认Schema
Snowflake用户的默认Schema可能未正确配置,导致Flyway无法识别:
- 登录Snowflake执行查询,确认当前用户默认Schema:
SELECT CURRENT_SCHEMA(); - 如果默认Schema不符,修改用户配置:
ALTER USER YOUR_SNOWFLAKE_USER SET DEFAULT_SCHEMA = YOUR_TARGET_SCHEMA;
4. 替换Snowflake JDBC驱动
Brew安装的Flyway自带的Snowflake驱动版本可能存在兼容性问题,替换为Windows上可用的驱动:
- 找到Mac上Flyway的驱动目录(示例路径,根据实际版本调整):
cd /usr/local/Cellar/flyway/9.22.3/libexec/drivers - 删除原有Snowflake驱动文件,将Windows上Flyway使用的
snowflake-jdbc-<版本>.jar复制到该目录 - 重新执行Flyway迁移命令
5. 完善连接URL参数
确保JDBC URL中明确指定Schema:
flyway.url=jdbc:snowflake://<your-account>.snowflakecomputing.com/?db=YOUR_DB&schema=YOUR_SCHEMA&warehouse=YOUR_WH
内容的提问来源于stack exchange,提问作者Kar
相关产品推荐
相关产品推荐

