dbt run报错DBT-1046(3D000):未选择数据库,如何解决?
解决dbt连接MySQL时"No database selected"错误的方法
1. 确认目标数据库已创建
先登录本地MySQL客户端,执行以下命令创建puddle数据库(如果还未创建):
CREATE DATABASE puddle;
报错提示"没有选择数据库",大概率是目标数据库不存在,或者配置里指定的数据库名称有误。
2. 修正profiles.yml配置
MySQL的schema机制和PostgreSQL等数据库不同,dbt的MySQL5适配器不需要同时配置database、dbname和schema,多余配置会导致识别混乱。将dev环境的配置修改为:
puddle: target: dev outputs: dev: type: mysql5 server: localhost port: 3306 database: puddle username: test password: test driver: MySQL ODBC 8.0 ANSI Driver prod: type: mysql5 server: [server/host] port: [port] database: [your_prod_database_name] username: [username] password: [password] driver: MySQL ODBC 8.0 ANSI Driver
- 移除多余的
dbname和schema字段,MySQL中dbt通过database参数指定要连接的数据库 - 生产环境配置里,
database要填写实际的生产数据库名称,不要保留[schema]这类占位符
3. 验证连接并重新执行
执行dbt debug命令测试配置是否能正常连接到MySQL数据库:
dbt debug
如果所有检查项都通过,再执行dbt run即可正常创建模型。
内容的提问来源于stack exchange,提问作者Huy Nguyen
相关产品推荐
相关产品推荐

