[freetds] insert varchar/text fields limited to max 80 characters

Dirk Koopman freetds at tobit.co.uk
Thu Feb 10 12:31:26 EST 2005


Environment:

MS-SQL 2003, TDS version 8.0, freetds 0.62.4, perl DBD::ODBC and DBI
(current CPAN versions).

doing something like:-

my $sth = $dbh->prepare("insert into SBOL [XDESC_C] values(?)");
my $a =
"soooooooooooooooooooooooooooooooooooommmmmmmmmmmmmmmmmmmmmmmmmmmmmeeeeeeeeeeeeeeeeeeeeeeeeeeeeevvvvvvvvvvvvvvvvvvery-long-string";
$sth->execute($a);

will only cause the first 80 characters of $a into SBOL.XDESC_C.

It does not seem to matter whether XDESC_C is declared as varchar(1000)
or text (we would prefer text). All varchar fields with length > 80 and
text fields have the data chopped at 80 characters.

Tried all the obvious things like:-

$dbh = DBI->connect('dbi:ODBC:cpa', $cpauser, $passwd, 
		{
			RaiseError=>1, AutoCommit=>0,
               		LongReadLen=>64*1024, LongTruncOk=>0,
			ChopBlanks=>1,
		} );


The same code, but running direct to a MySQL or Pg database (with
different DBI dsn obviously) work just as expected. 

Any pointers?

Dirk





More information about the FreeTDS mailing list