ODBC SQL update Заявление о проблеме, если более 32 000 символов - PullRequest
0 голосов
/ 19 июля 2011

Вот проблема: у меня есть одна гигантская строка данных XML, хранящаяся в поле (BLOB) в таблице.Он содержит несколько строк по 70 тыс. Символов или более.Я вытащил его, используя ODBC_Connection.

Я могу импортировать (без проблем).
Я могу манипулировать XML и сохранять его обратно как строку (без проблем).
Я могу сохранить строкуобратно в поле MySQL (без проблем).

Проблема возникает, когда я пытаюсь сохранить его обратно в исходное поле, из которого извлек его.Если я сохраню строку длиной менее 32 000 символов, мы получим золотую награду.Если в строке больше символов, BAM.Я получаю это сообщение об ошибке.

( ! ) Warning: odbc_exec() [function.odbc-exec]: SQL error: [DataDirect][ODBC InterBase
driver][InterBase]Dynamic SQL Error, SQL error code = -104, token size exceeds limit,
SQL state 37000 in SQLExecDirect in ...\Test\index4.php on line 129 Call Stack

#   Time    Memory  Function    Location
1   0.0011  482872  {main}( )   ..\index4.php:0
2   0.1260  1033760 odbc_exec ( )   ..\index4.php:129

Вот код PHP, который я использую на всякий случай:

// Now save it back to the system
$conn=odbc_connect($DBNAME_O,$DBUSER_O,$DBPW_O);
if (!$conn)
{exit("Connection Failed: " . $conn);}
echo $tempFileXML;
$sql="UPDATE EHR_VISITS SET RECORD='$tempFileXML' WHERE EHR_VISITS_ID='1396'";
//  echo $theData;
$rs=odbc_exec($conn,$sql);
odbc_close($conn);  

Спасибо за помощь ...

ОБНОВЛЕНИЕ: Это связано сбаза данных между базами, а не MS SQL.Кроме того, я попытался использовать другой драйвер ODBC, и получил то же сообщение, но с чуть более высокой толерантностью символов: 42000 вместо 37000.

ПОМОГИТЕ, пожалуйста ....

1 Ответ

1 голос
/ 19 июля 2011

Вы пытались передать данные в качестве параметра?

Например:

$sql = UPDATE EHR_VISITS SET RECORD=? WHERE EHR_VISITS_ID='1396'; 
$stmt = odbc_prepare($conn, $sql); 
$rs = odbc_execute($stmt, $tempFileXML);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...