【问题标题】:SQLAlchemy, FreeTDS & MSSQL DBAPI error: Conversion between 47 and -1 datatypes is not supportedSQLAlchemy、FreeTDS 和 MSSQL DBAPI 错误:不支持 47 和 -1 数据类型之间的转换
【发布时间】:2015-12-29 16:54:14
【问题描述】:

我在 Ubuntu 14.04.3 机器上创建了一些 Python 代码,该机器使用 SQLAlchemy 和 FreeTDS 来访问 MSSQL 数据库,它可以完美运行。当我将它部署到 CentOS 6.6 机器上时,完全相同的代码失败了:

sqlalchemy.exc.DBAPIError: (Error) ('Layer: 2, Origin: 1\ncs_convert: cslib user api layer: external error: Conversion between 47 and -1 datatypes is not supported.'

我被难住了。我检查了 freetds.conf、odbc.ini 和 odbcinst.ini 并且相关条目是相同的。

  • Ubuntu 机器:Python 2.7.6
  • Ubuntu 机器:SQLAlchemy 0.8.4
  • CentOS 机器:Python 2.7.9 :: Anaconda 2.2.0(64 位)
  • CentOS 机器:SQLAlchemy 0.9.7

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 我随后通过在我的 SQLAlchemy 代码中使用手动查询解决了这个问题,我只需使用普通 SQL 并执行它。

标签: python sql-server linux sqlalchemy freetds


【解决方案1】:

您在每台机器上使用哪个 FreeTDS 版本?根据我的经验,CentOS 6 使用 FreeTDS 0.91,而 Ubuntu 使用 0.95。这些版本处理日期字段的方式不同,FreeTDS 0.95 支持 2008 年引入的新 MS 日期字段。您可以:

  • 在所有设置中强制 TDS 版本为 7.1 或
  • (首选)在 CentOS 6 上升级到 FreeTDS 0.95,这需要从源代码构建。

祝你好运!

【讨论】:

  • 感谢您的反馈,我会做一些调查并通知您。
猜你喜欢
  • 2017-02-15
  • 2019-05-09
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2021-09-28
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多