更新到 pyodbc 4 导致“分段错误”

Posted

技术标签:

【中文标题】更新到 pyodbc 4 导致“分段错误”【英文标题】:Update to pyodbc 4 causes "Segmentation fault" 【发布时间】:2017-02-24 20:55:23 【问题描述】:

我有一个在 Elastic Beanstalk 上运行的 Django+celery 站点,该站点使用 pyodbc 3。由于另一个问题,我不得不更新到 pyodbc 4。

但是,网站开始给出错误 500,这是记录的信息:

[Fri Feb 24 20:02:14.448536 2017] [core:notice] [pid 27978] AH00052: child pid 28292 exit signal Segmentation fault (11)
[Fri Feb 24 20:02:15.145503 2017] [core:error] [pid 27988] [client 205.165.34.225:50040] End of script output before headers: wsgi.py, referer: ...

在那段时间里,芹菜工人仍在运行并且工作得很好!我重新部署了整个服务器(在 AWS 中重建环境),但没有解决问题。

我不得不恢复到 pyodbc 3,它开始工作得很好。有什么想法吗?

django 1.10.4、pyodbc 4.0.11、django-pyodbc-azure 1.10.0.1

【问题讨论】:

如果您有理由相信这是 pyodbc 4.x 中的错误,那么您可能应该将其报告为问题 here。 @GordThompson 我不能说这是一个错误,我对 Linux 和 Django 还很陌生,所以很可能是配置问题 当您说“我已经重新部署了整个服务器并解决了问题”时,您的意思是它在重新部署后开始使用 pyodbc 4.x,还是重新将还原的 pyodbc 部署回 3.x? 对不起,我的意思是说“它没有解决问题”,点击“重建环境”。我会更正问题 【参考方案1】:

我们也遇到了这个问题,并将在周一向pyodbc 提供堆栈跟踪和相关信息。我们通过固定我们的要求来修复它:

pyodbc==3.1.1
django-pyodbc-azure==1.10.4.0

虽然这还不能让您获得pyodbc 4.0,但它适用于您网站的其余部分。我们使用4.0.5 运行该站点时遇到了一些运气,但在迁移时遇到了一些问题。 (注意:如果你使用django-pyodbc-azure,你应该使用与你的Django版本匹配的最高版本,即1.10.4.0对于Django 1.10。)

祝你好运!

【讨论】:

谢谢,但我相信我需要 v4 来修复一些编码问题github.com/mkleehammer/pyodbc/issues/112 你知道这是否在 v3.1.1 中得到修复(我相信不是)。 直到明天我才有机会进行更多测试,但您可以尝试 pip install pyodbc==4.0.0? 此问题已在此处报告:github.com/mkleehammer/pyodbc/issues/… 请添加您可以添加的任何信息,以便尽快解决此问题。我不知道如何提供这样的信息。谢谢。

以上是关于更新到 pyodbc 4 导致“分段错误”的主要内容,如果未能解决你的问题,请参考以下文章

为啥释放内存会导致分段错误?

确定导致分段错误的代码行?

带有 ifort 的 tracebackqq() 导致分段错误

gcc,c++:静态字符串成员变量导致堆损坏/分段错误

为啥重新声明 std::cout 会导致分段错误?

启动线程导致指针初始化时出现分段错误