Superset安装出错 sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, ...
时间:2022-06-19
本文章向大家介绍Superset安装出错 sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, ...,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述
今天试着在python3.7.2上安装最新的superset(0.28.1),在初始化数据库的时候报如下错误:
$ superset db upgrade
...
Traceback (most recent call last):
File "/home/jhadmin/.pyenv/versions/myenv-3.7.2/bin/superset", line 15, in <module>
cli()
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/flask/[cli.py](cli.py)", line 380, in main
return AppGroup.main(self, *args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 697, in main
rv = self.invoke(ctx)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 535, in invoke
return callback(*args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[decorators.py](decorators.py)", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/flask/[cli.py](cli.py)", line 257, in decorator
return __ctx.invoke(f, *args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/click/[core.py](core.py)", line 535, in invoke
return callback(*args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/flask_migrate/[cli.py](cli.py)", line 134, in upgrade
_upgrade(directory, revision, sql, tag, x_arg)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/flask_migrate/__[init__.py](init__.py)", line 95, in wrapped
f(*args, **kwargs)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/flask_migrate/__[init__.py](init__.py)", line 280, in upgrade
command.upgrade(config, revision, sql=sql, tag=tag)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/[command.py](command.py)", line 276, in upgrade
script.run_env()
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/script/[base.py](base.py)", line 475, in run_env
util.load_python_file(self.dir, "[env.py](env.py)")
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/util/[pyfiles.py](pyfiles.py)", line 90, in load_python_file
module = load_module_py(module_id, path)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/util/[compat.py](compat.py)", line 156, in load_module_py
spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/superset/migrations/[env.py](env.py)", line 100, in <module>
run_migrations_online()
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/superset/migrations/[env.py](env.py)", line 93, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/runtime/[environment.py](environment.py)", line 839, in run_migrations
self.get_context().run_migrations(**kw)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/alembic/runtime/[migration.py](migration.py)", line 361, in run_migrations
step.migration_fn(**kw)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/superset/migrations/versions/[4451805bbaa1_remove_double_percents.py](4451805bbaa1_remove_double_percents.py)", line 82, in upgrade
replace('%%', '%')
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/superset/migrations/versions/[4451805bbaa1_remove_double_percents.py](4451805bbaa1_remove_double_percents.py)", line 53, in replace
.join(Table)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/sqlalchemy/orm/[query.py](query.py)", line 2235, in join
from_joinpoint=from_joinpoint,
File "<string>", line 2, in _join
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/sqlalchemy/orm/[base.py](base.py)", line 220, in generate
fn(self, *args[1:], **kw)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/sqlalchemy/orm/[query.py](query.py)", line 2414, in _join
left, right, onclause, prop, create_aliases, outerjoin, full
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/sqlalchemy/orm/[query.py](query.py)", line 2437, in _join_left_to_right
) = self._join_determine_implicit_left_side(left, right, onclause)
File "/home/jhadmin/.pyenv/versions/3.7.2/envs/myenv-3.7.2/lib/python3.7/site-packages/sqlalchemy/orm/[query.py](query.py)", line 2568, in _join_determine_implicit_left_side
"Can't determine which FROM clause to join "
sqlalchemy.exc.InvalidRequestError: Can't determine which FROM clause to join from, there are multiple FROMS which can join to this entity. Try adding an explicit ON clause to help resolve the ambiguity.
问题原因
这是 SQLAlchemy 库版本太高导致的,需要安装低版本的 SQLAlchemy 库。
解决办法
# 查看当前 SQLAlchemy 版本
$ pip list | grep -i sqlalchemy
Flask-SQLAlchemy 2.3.2
SQLAlchemy 1.3.2
SQLAlchemy-Utils 0.33.11
# 安装低版本 SQLAlchemy
$ pip install SQLAlchemy==1.2.18
然后重新运行 “superset db upgrade” 命令初始化数据库。
- 网络操作系统VyOS安装与初步使用
- 为何webpack风靡全球?三大主流模块打包工具对比
- 今天研究了一下手机通信录管理系统(C语言)
- Android软件测试Monkey测试工具
- 程序员面试50题(4)—把字符串转换成整数[算法]
- 程序员面试50题(3)—翻转句子中单词的顺序[算法]
- H5动画开发快车道
- Open vSwith模拟网关实现不同子网的互通
- 总结了一些指针易出错的常见问题(二)
- 史上最清晰的红黑树讲解(上)
- C++之new/delete/malloc/free详解
- 验证 结构体指针与自增运算符
- Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失下篇
- ONOS1.3.0集群实验
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Greenplum集群Master与Standby相互切换
- Java基础知识三问—百度真题
- 访问权限导致toString返回空BUG分享
- 基于 Spring Boot 的在线考试系统
- Redis系列:高可用哨兵方案部署
- linux或windows环境下pytorch的安装与检查验证(解决runtimeerror问题)
- Linux 查看历史命令并执行的方法
- 在 awk 中使用循环
- 移植busybox构建最小根文件系统的步骤详解
- Linux中的screen命令使用详解
- Mysql4种方式避免重复插入数据!
- 手撕RTSP协议系列(3)——sdp格式详解
- Linux tee命令使用详解
- 简单了解Linux性能监控命令free
- 在CentOS 8上安装htop的教程