超出Tcl值(2147483647字节)的最大大小

时间:2014-12-11 09:22:22

标签: tcl ubuntu-14.04

我正在尝试通过Ubuntu控制台执行TCL脚本,

在控制台中执行示例测试脚本

tcl Main.tcl -file xxxx -test xxxx | tee test.log

在没有执行我的脚本最大大小超出Tcl值(2147483647字节)的情况下抛出错误消息

我的机器TCL版本

% puts $tcl_version
8.6

我的机器TCL平台

%   parray tcl_platform
tcl_platform(byteOrder)     = littleEndian
tcl_platform(machine)       = x86_64
tcl_platform(os)            = Linux
tcl_platform(osVersion)     = 3.13.0-32-generic
tcl_platform(pathSeparator) = :
tcl_platform(platform)      = unix
tcl_platform(pointerSize)   = 8
tcl_platform(threaded)      = 1
tcl_platform(user)          = vkosuri
tcl_platform(wordSize)      = 8

但它与其他Ubuntu机器运行良好,没有给出任何错误消息

其他计算机TCL版

% puts $tcl_version
8.4

其他机器TCL平台

% parray tcl_platform
tcl_platform(byteOrder) = littleEndian
tcl_platform(machine)   = x86_64
tcl_platform(os)        = Linux
tcl_platform(osVersion) = 2.6.28-19-generic
tcl_platform(platform)  = unix
tcl_platform(threaded)  = 1
tcl_platform(user)      = vkosuri
tcl_platform(wordSize)  = 8

有人可以解释我的机器出了什么问题。

由于

Malli

2 个答案:

答案 0 :(得分:2)

这看起来很像你可能会对可以一块分配的内存块大小施加限制。 64位平台上的2GB限制是long-standing bug(分配给我!),无法完全破坏ABI而无法修复,这就是为什么它尚未修复的原因。当你达到极限时,Tcl失败了。它并不总是灾难性地失败 - 这部分取决于它在问题被发现时在C级恢复的背景 - 但它肯定可以直接过去。

由于这是一个已知问题,因此您最好的选择是找到解决方法。你能一次处理一下你的数据而不是一块大块的数据吗? (当然,我们需要查看更多代码来提出具体建议。)

答案 1 :(得分:0)

问题是Ubuntu http://www.freetds.org/

上的freeTDS包

第一种方法

查询在freeTDS == 0.63下运行良好,但我的Ubuntu有freeTDS 0.93,现在我将freeTDS 0.93降级到0.63,它运行正常。

freeTds 0.63来源

ftp://ftp.freetds.org/pub/freetds/old/0.63/freetds-0.63.tar.gz

在我的Ubuntu Box上设置SQL Server连接

必需的库/程序

tclodbc >= v2.5.1 

unixODBC >= v2.2.11 

freeTDS == 0.63

<强>配置

编辑/etc/odbcinst.ini并包含以下部分:

  

描述= SQL Server 2005

     

驱动程序驱动程序= /usr/lib/odbc/libtdsodbc.so

第二种方法

将libtdsodbc.so复制到/ usr / lib / odbc /

我已将libtdsodbc.so放入我的Google云端硬盘中,您可以下载

https://drive.google.com/open?id=0B_cUPwVRE2oUXzIzX0NNSG1VZ1E&authuser=0

希望它能奏效。

由于

Malli