繁体   English   中英

PHP - PDO - Oracle - LONG - 数据太大而无法缓冲,截断以适应

[英]PHP - PDO - Oracle - LONG - data too large to buffer, truncating to fit

我在 Oracle 中使用 PDO,当我尝试对“LONG”类型的列使用“fetchAll”时,如果其中的数据超过 512 个字符,则会出现以下警告:

警告:PDOStatement::fetchAll() [pdostatement.fetchall]:第 X 列数据对于缓冲区来说太大,在第 69 行被截断以适合 (...)

PHP 版本 5.2.17 Oracle 版本:11g PDO 驱动程序:oci

我有一个类似的问题。 选定的列之一是 oracle 时间戳数据类型,因此在我的情况下,帮助使用定义的日期格式封装此列,例如如下所示:

SELECT TO_CHAR(column_name, 'YY/MM/DD HH24:MI:SS') as column_name FROM table

详细信息:即对于出现问题的列。 在 varchar2( X ) 中,X = 所需的大小。 示例:从表中选择 cast(name_column AS varchar2(70)) 作为昵称;

我遇到了同样的问题,但就我而言,数据类型是 varchar。 问题是我使用 varchar(3) 来存储诸如“NÃO”之类的东西。 由于 'Ã' 使用超过 1 个字节来存储,当我尝试 fetchAll 时,我遇到了相同的警告。

检查您存储的数值是否大于 Long 的大小。 在 Oracle 中更改列的大小。

我在 2020 年使用 PHP 7.2 和最新版本的 PHP PDO OCI 库仍然遇到这个问题。 我的解决方案是改用 oci_connect,并使用它来拉长字段。

我发现一个很好的参考正在使用: https : //www.oracle.com/technical-resources/articles/fuecks-lobs.html

必须在oracle中改变varchar的大小,例如:如果你需要另外一个符号的50个字符,你必须写

varchar2(100)

在模型 yii 中你必须写length 100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM