Skip to Content.
Sympa Menu

freetds - [freetds] "DB-lib error, no 20050, Attempt to convert data stopped by syntax error in source field" - FreeTDS trying to convert to SYBMONEY for some reason?

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Karen Pease <Karen.Pease AT isavia.is>
  • To: "freetds AT lists.ibiblio.org" <freetds AT lists.ibiblio.org>
  • Subject: [freetds] "DB-lib error, no 20050, Attempt to convert data stopped by syntax error in source field" - FreeTDS trying to convert to SYBMONEY for some reason?
  • Date: Fri, 5 Aug 2016 17:03:08 +0000

Hi, all. I'm trying to get a piece of software to work on 64 bit and as a
consequence I can no longer use the "sybase-ocsd" package that we'd been
using, since I can only locate it in 32 bit. So I'm trying FreeTDS. But I
can't make heads or tails of the error I'm getting.

In my code, I'm running:

dbcmd (ET_dbproc, " select distinct a.program_name, b.name ");
dbcmd (ET_dbproc, " from sysprocesses a, sysdatabases b");
dbcmd (ET_dbproc, " where a.dbid = b.dbid");
dbsqlexec (ET_dbproc);
SYDBRESULT (ET_dbproc);
dbbind (ET_dbproc, 1, NTBSTRINGBIND, (DBCHAR) 0, program);
dbbind (ET_dbproc, 2, NTBSTRINGBIND, (DBCHAR) 0, dname);
printf("%d\n", __LINE__);
dbnextrow(ET_dbproc);
printf("%d\n", __LINE__);
printf ("program %s, dname %s", program, dname);

Program and dname are of course character arrays. On the database end,
a.program_name is a char(8) and name is sysname(30).

>From that, I see:

421
syeh: DB-lib error, no 20050, Attempt to convert data stopped by syntax
error in source field
os error, Success
423
program , dname


Dumping the debug output to a file, it ends like:

-------
token.c:564:processing result tokens. marker is d1(ROW)
token.c:1951:tds_process_row(): reading column 0
data.c:534:tds_get_data: type 47, varint size 1
data.c:587:tds_get_data(): wire column size is 16
token.c:1951:tds_process_row(): reading column 1
data.c:534:tds_get_data: type 39, varint size 1
data.c:587:tds_get_data(): wire column size is 6
util.c:165:Changed query state from READING to PENDING
buffering.h:305:buffer_transfer_bound_data(0x24c2670 4040 -1 0x24c2660 0)
dblib.c:7210:copy_data_to_host_var(47 [SYBCHAR] len 16 => 60 [SYBMONEY] len 0)
dblib.c:7364:copy_data_to_host_var(): tds_convert returned 8
dblib.c:7210:copy_data_to_host_var(39 [SYBVARCHAR] len 6 => 60 [SYBMONEY] len
0)
dblib.c:7364:copy_data_to_host_var(): tds_convert returned -3
dblib.c:7925:dbperror(0x24c2660, 20050, 0)
dblib.c:7993:dbperror: Calling dblib_err_handler with msgno = 20050;
msg->msgtext = "Attempt to convert data stopped by syntax error in source
field"
dblib.c:4865:dbdead(0x24c2660) [alive]
dblib.c:8015:dbperror: dblib_err_handler for msgno = 20050; msg->msgtext =
"Attempt to convert data stopped by syntax error in source field" -- returns
2 (INT_CANCEL)
dblib.c:2117:leaving dbnextrow() returning REG_ROW/MORE_ROWS
-------

Huh? SYBMONEY? How did money come into the picture here?

Lots more errors are coming up, but let's start at the beginning with this,
because it's sure left me scratching my head...

(Full disclosure: I'm a newbie at Sybase; my experience lies mainly with
postgres. But the task at hand for me involves porting our app to 64 bit,
so....)


- kv, Karen





Archive powered by MHonArc 2.6.24.

Top of Page