如何解决long2ice/synch运行命令报invalid choice: 'mysql_db'错误
报错原因
命令参数顺序不符合synch的命令规范。synch的子命令(etl/produce/consume)必须放在全局参数(--alias/-c等)之前,你把--alias mysql_db放在etl之前,程序会将mysql_db误识别为子命令,因此触发无效选项报错。
配置检查
你当前贴出的仅为单数据源的片段配置,存在多处遗漏:
- 缺少ClickHouse服务的连接配置,包含地址、端口、账号、密码等必填项
- 缺少你指定的broker(redis)的连接配置,包含地址、端口、库号、密码等必填项
- 单数据源的mysql配置需要嵌套在最外层的
sources数组中,否则程序无法读取到你定义的mysql_db别名 - 若需同步指定表,需要在对应database配置下添加
tables字段,列出需要同步的表名,否则不会执行同步逻辑
解决方法
1. 修正命令参数顺序
正确的命令格式为:
synch etl --alias mysql_db -h
2. 补全完整配置文件
参考如下结构补全你的配置文件:
# ClickHouse全局连接配置 clickhouse: host: 127.0.0.1 port: 9000 user: default password: "" # Redis全局连接配置(你使用redis作为broker需配置该项) redis: host: 127.0.0.1 port: 6379 password: "" db: 0 prefix: "synch" # 数据源列表 sources: - db_type: mysql alias: mysql_db broker_type: redis server_id: 1 host: 127.0.0.1 port: 3306 user: root password: "12345" init_binlog_file: init_binlog_pos: skip_dmls: skip_delete_tables: skip_update_tables: databases: - database: test # 填写你需要同步的test库下的表名 tables: - table1 - table2
内容的提问来源于stack exchange,提问作者Bimal Kumar Dalei
相关产品推荐
相关产品推荐

