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.