AssertionError:无法从字符串“Redshift 1.0.32574 on Amazon Linux,由 gcc-7.3.0 编译”确定版本

Posted

技术标签:

【中文标题】AssertionError:无法从字符串“Redshift 1.0.32574 on Amazon Linux,由 gcc-7.3.0 编译”确定版本【英文标题】:AssertionError: Could not determine version from string 'Redshift 1.0.32574 on Amazon Linux, compiled by gcc-7.3.0' 【发布时间】:2021-10-20 09:48:02 【问题描述】:

我正在使用 python pandas 库来读取 reshift 仓库中的数据。命令 pd.read_sql() 失败并显示错误消息,AssertionError: Could not determine version from string 'Redshift 1.0.32574 on Amazon Linux, compiled by gcc-7.3.0'

这里有人知道我该如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

这是最近一次集群(补丁)升级中的一个已知问题,其中版本字符串格式发生了变化。期望特定字符串格式的应用程序可以解析以确保它是受支持的版本可能会出错。请参阅 https://forums.aws.amazon.com/thread.jspa?messageID=998260&#998260 获取您可以 ping 以立即修复的 AWS 联系人。如果您与 AWS 签订了支持协议,您也可以在那里创建票证。

【讨论】:

谢谢,我能够解决这个问题;似乎对于 3.7 以上的 Python 版本,最好的解决方案是编辑目录 /site-packages/sqlalchemy/dialects/postgresql 中的 base.py 文件。在我们的例子中,将 redshift 添加到函数 _get_server_version_info 解决了这个问题 我们的代码从 ` m = re.match( r".*(?:PostgreSQL|EnterpriseDB) "` 更改为这个 ` m = re .match(r".*(?:PostgreSQL|EnterpriseDB|Redshift)"`` 很酷,因此您修改了客户端版本检查以接受新字符串。这也适用,但可能不适用于所有用户。 是的,我同意它可能不适用于所有用户

以上是关于AssertionError:无法从字符串“Redshift 1.0.32574 on Amazon Linux,由 gcc-7.3.0 编译”确定版本的主要内容,如果未能解决你的问题,请参考以下文章

AssertionError: 无法计算输出张量(“softmax_layer/Identity:0”,shape=(None, 27, 8870), dtype=float32)

async python - 从引发AssertionError获取正确的参数

java.lang.AssertionError:不可能引起:java.lang.NoSuchMethodException:值[]

Android Studio AssertionError:不要在哑模式下从内部读取操作调用 waitForSmartMode

Vuex 中的单元测试抛出 AssertionError 等于 Object (type, text)

PySpark MLLib Zeppelin Logistic回归度量标准错误:AssertionError:维度不匹配