У меня есть приложение Python, которое работает на машине Linux и подключается к базе данных MS SQL Server, работающей на Windows Server внутри виртуальной машины. У меня есть причины. Мое приложение выполняет несколько больших запросов и обрабатывает большой объем данных. В основном это работает нормально, но время от времени программа просто вылетает из-за следующего:
python: read.c: 207: tds_get_string: Утверждение `dest_size› = (size_t) string_len 'не выполнено.
Я не уверен, с чего начать. Трассировка стека Python отсутствует. Скорее, программа просто распечатывает вышеуказанное и завершает работу. Если бы это было обычным исключением, я мог бы его поймать и с ним справиться.
Моя строка подключения sqlalchemy:
mssql + pyodbc: // имя пользователя: пароль @ localhost: 1433 / база данных? driver = FreeTDS
Если это важно, tsql -C выдаст следующий результат:
Параметры времени компиляции (устанавливаются с помощью скрипта конфигурации)
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
Я предполагаю, что моя проблема - результат ошибки во freetds. Я установил freetds и unixodbc через apt-get на свой Linux Mint. Я установил pyodbc через pip и использую anaconda. Я экспериментировал с установкой различных версий freetds, unixodbc и pyodbc из исходников. Пока я не нашел комбинацию, которая вообще работает. Однако я действительно не знаю, что делаю. Я ищу объяснения, идеи или обходные пути. Или, конечно, простые и полные решения.