#13722 [Comment]: mssql text type returns only 255 char
| From: | systematic11 at comcast dot net | Date: | Sat, 27 Jul 2002 03:42:44 +0000 |
| Subject: | #13722 [Comment]: mssql text type returns only 255 char | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-15404@lists.php.net to get a copy of this message | ||
ID: 13722
Comment by: systematic11@comcast.net
Reported By: brendan@msu.edu
Status: Open
Bug Type: Sybase-ct (ctlib) related
Operating System: Solaris 2.7
PHP Version: 4.0.6
New Comment:
As of version 4.2.1, this issue has still not been corrected. Perhaps
the problem lies with FreeTDS.
Apparently neither the CT-Lib and DB-Lib for Sybase have no use for
this property (MSSQL TEXT SIZE).
If you must connect to MS SQL Server from PHP, I would suggest creating
an include file that is included at the top of any PHP script that
needs to access the MS SQL Server. Let the include file open a
connection and call a query to "set textsize 65536" or to whatever
limit you want.
e.g.
<?php
// include file for MS SQL server
$HOSTNAME = "SQLServer70";
$USERNAME = "sa";
$PASSWORD = "??";
$conn = mssql_pconnect($HOSTNAME, $USERNAME, $PASSWORD);
if ($conn) {
mssql_query("SET TEXTSIZE 65536");
mssql_select_db("whatever", $conn);
}
?>
Kelly Akins
Previous Comments:
------------------------------------------------------------------------
[2002-05-21 11:52:51] vedran@quark.fsb.hr
I have 4.1.2 and It's still not fixed.
Running my .php that has a query "SELECT sometexttypefield FROM
sometable"; with /usr/bin/php4 results in ;FATAL: emalloc(): Unable
to allocate -2147483648 bytes.
So it's definately some a bug and it probably can be solved if we know
where this mailloc is called.
------------------------------------------------------------------------
[2001-10-19 13:01:39] brendan@msu.edu
Then there still exists a problem with the sybase-ct support for mssql,
in that there is no way to specify a TEXTSIZE that allows PHP to
support MSSQL 7.0's TEXT type.
Is there not?
------------------------------------------------------------------------
[2001-10-19 12:55:06] fmk@php.net
When you use subase-ct and FreeTDS you are not using the mssql
extension, and all the settings in the ini file for mssql is not used.
The settings you are refering to works when you use the mssql
extension, though that extension is only available on Win32 platforms.
------------------------------------------------------------------------
[2001-10-17 22:19:34] brendan@msu.edu
Built with:
(edited config template to remove uneccessary sybase libs that are not
included with freetds -lsybtcl -lcomn -lcs )
./configure --prefix=/home/username/php --with-sybase-ct=../../freetds
--with-pgsql=/home/postgres/pgsql --with-apache=../../apache_1.3.22
-enable-track-vars --with-imap=../../imap
make
make install
FreeTDS verified functional using test scripts, and functional through
Perl to same DB that PHP is connected to.
Problem: Text type returns only first 255 chars
Expected: >540 chars (can retrieve through FreeTDS/Perl)
php.ini contains uncommented lines:
mssql.textlimit=8192
mssql.textsize=8192
Query to MSSQL Server:
SELECT @@TEXTSIZE
Returns: 4096
Expected: 8192 (due to php.ini settings?)
Query to MSSQL Server:
SET TEXTSIZE 8192 SELECT @@TEXTSIZE
Returns: 8192
Expected: 8192
Suspect: php.ini not being read
But: other setting changes show up on php_info()
Suspect: mssql settings not being read properly from
php.info?
Query to MSSQL Server:
SET TEXTSIZE 8192 SELECT our_col FROM our_table;
Returns: only first 255 chars of our_col
Expected: all 500+ chars in field
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=13722&edit=1