String veri, SQLSRV PHP Sürücüsü sağdan kesilme ("çörek delik")

0 Cevap php

Ben (bir Windows 2003 sunucu üzerinde) Microsoft'un sqlsrv PHP sürücüsünü kullanarak bir text kolona metin büyük-ish miktarda yazıyorum.

Orada metnin uzunluğu oldukça küçük ise, bu başarıyla kaydedilir garip bir "çörek delik" hata var, ve metin yeterince büyükse, o da başarıyla kurtaracak. Arasında, aşağıdaki hatayı alıyorum:

SQLSTATE: 22001
code: 0
message: [Microsoft][SQL Server Native Client 10.0]String data, right truncation 

Alt limit (hataya neden) 4011 karakter etrafında görünüyor, ve üst sınır 8024. Güç-iki sınır (4096 ve 8192) üzerine itin olabilir veritabanındaki birkaç sütun vardır.

Bu ne olursa olsun sql varlık koşmak olur. Bir testi olarak, biz şu koştu:

$connectionInfo = array("UID" => "REDACTED", "PWD" => "REDACTED", "Database"=>"REDACTED", "CharacterSet" => "UTF-8");

$conn = sqlsrv_connect("SQLSERVER", $connectionInfo);

$stmt = sqlsrv_prepare($conn, "SELECT LEN(?)", array(&$large_string));

if (!sqlsrv_execute($stmt))
    print_r(sqlsrv_errors());

sqlsrv_free_stmt($stmt);

sqlsrv_close($conn);

Biz aynı davranışı sergiler (varchar(max) sütunlar kullanarak) başka bir tablo buldum.

Edit: Bu bir varchar sütunu ile UTF-8 kodlaması kullanılarak oluşur, ancak standart kodlamasını kullanarak zaman değil.

0 Cevap