gpt4 book ai didi

python - 字节串太长 PyPyOdbc

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:28 25 4
gpt4 key购买 nike

使用 FreeTDS 和 Python3.5 库 PyPyodbc 当我尝试在 SQL Server 数据库(驻留在 Windows 上)中插入一行时,我得到了一个“字节串太长”。在 FreeTDS conf 文件下,有一个可用的 'text size',我将其更改为:

[global]
text size = 4294967295

这里是配置文件

/etc/freetds/freetds.conf
[global]
tds version = 4.2
text size = 4294967295

[sqlserver]
host = 192.168.0.3
port = 1433
tds version = 8.0

/etc/odbc.ini
[sqlserverdatasource]
Driver = freetds
Description = SQL Server
Servername = sqlserver
Database = MyDB
TDS_Version = 8.0

/etc/odbcinst.ini
[freetds]
Description = MS SQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Trace = Yes
TraceFile = /tmp/freetds.log
FileUsage = 1
UsageCount = 1

执行'tsql -C':

Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 4.2
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes

执行 '/usr/bin/tsql -S 192.168.0.3 -U user':

Password: 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"

执行'odbcinst -j':

unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/metheUser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Python PyPyodbc 连接字符串:

connStr = 'DSN=sqlserverdatasource;Database=MyDB;uid=user;pwd=password'

但是错误不断出现,我错过了什么?

最佳答案

我终于找到问题了,除了在TDS_Version = 8.0 中设置,PyPyodbc 中字符缓冲区的分配是不够的。我的查询有超过 3100 个字符(至少)。现在直接更新 PyPyodbc 使数量翻倍就足够了。不确定是否有必要将其翻两番。

为什么这个没有被添加到库中?更多信息:https://github.com/jiangwen365/pypyodbc/issues/27

感谢@GordThompson帮助我解决各种可能性并在他自己的环境中进行测试。

关于python - 字节串太长 PyPyOdbc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46134314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com