Bug #63809 [Com]: ORA-01461 when inserting/updating more that 1333 characters
Edit report at https://bugs.php.net/bug.php?id=63809&edit=1
ID: 63809
Comment by: gureedo at gmail dot com
Reported by: blair dot chesnut at gmail dot com
Summary: ORA-01461 when inserting/updating more that 1333
characters
Status: Open
Type: Bug
Package: PDO OCI
Operating System: Unix/Solaris 10
PHP Version: 5.4.9
Block user comment: N
Private report: N
New Comment:
This is duplicate. See same bug reported earlier:
https://bugs.php.net/bug.php?id=55138
Previous Comments:
------------------------------------------------------------------------
[2013-08-07 15:40:57] zulrang at gmail dot com
You can get around this by adding the size to the bind statement:
$sth->bindValue(':p1', $big_value, PDO::PARAM_STR, 4000);
------------------------------------------------------------------------
[2012-12-23 23:16:15] sixd@php.net
See also https://bugs.php.net/bug.php?id=54379
value_sz is set to allow for character set conversion due to different client and
server character sets. This might increase the storage requirements when the
data is stored in the server. The hardcoded choice of the ratio is questionable.
------------------------------------------------------------------------
[2012-12-19 19:42:49] blair dot chesnut at gmail dot com
Description:
------------
Using PDO/OCI via Yii framework. Inserts/updates to varchar2(4000) column fail with error ORA-01461
when value exceeds 1332 characters.
Line 300 of source php-5.4.9/ext/pdo_oci/oci_statement.c:
value_sz = 1332; /* maximum size before value is interpreted as a LONG value */
Why???
I changed to "value_sz = 4000", recompiled, and inserts/updates work fine. I'm not
using CLOBs, only varchar2() columns.
Test script:
---------------
$dbh = new PDO($dsn, $dbuser, $dbpass);
$sth = $dbh->prepare('insert into some_table (some_varchar4000_column) values (:p1)');
$big_value = str_repeat('ABCDEFGHIJ', 300);
$sth->bindValue(':p1', $big_value, PDO::PARAM_STR);
$sth->execute();
print_r($sth->errorInfo());
Expected result:
----------------
Array
(
[0] => 00000
[1] =>
[2] =>
)
Actual result:
--------------
Array
(
[0] => HY000
[1] => 1461
[2] => OCIStmtExecute: ORA-01461: can bind a LONG value only for insert into a LONG column
(/usr/local/src/php-5.4.5/ext/pdo_oci/oci_statement.c:146)
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63809&edit=1
Thread (7 messages)