1

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

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

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

4

5 回答 5

1

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

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

于 2014-12-07T13:15:56.210 回答
0

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

于 2013-03-08T18:00:21.157 回答
0

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

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

于 2020-10-02T18:42:31.320 回答
0

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

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

于 2016-11-30T19:29:39.043 回答
-1

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

varchar2(100)

在模型 yii 中你必须写length 100

于 2019-04-05T05:27:55.297 回答