Php 与代码点火器一起使用时,ORA-01704字符串文字太长

Php 与代码点火器一起使用时,ORA-01704字符串文字太长,php,oracle,codeigniter,ora-01704,Php,Oracle,Codeigniter,Ora 01704,目前我正在使用CodeIgniter和Oracle数据库开发web应用程序。当我尝试为CLOB列插入长字符时,我得到一个错误 ORA-01704字符串文字太长 如何在CI中修复此问题 假设我在甲骨文中有一张这样的表 CREATE TABLE test( ID NUMBER, SUMMARY CLOB ) 当我试图通过此命令使用CI插入一行(摘要列超过4000 cahr)时 $this->db->set('ID','123'); $this->db->set(

目前我正在使用CodeIgniter和Oracle数据库开发web应用程序。当我尝试为CLOB列插入长字符时,我得到一个错误

ORA-01704字符串文字太长

如何在CI中修复此问题

假设我在甲骨文中有一张这样的表

CREATE TABLE test(
   ID NUMBER,
   SUMMARY CLOB
)
当我试图通过此命令使用CI插入一行(摘要列超过4000 cahr)时

$this->db->set('ID','123');
$this->db->set('SUMMARY','Very long text is here');
$this->db->insert('test');
我得到的
字符串文字太长

我使用oracle10g

ORA-01704: string literal too long
Cause: The string literal is longer than 4000 characters.
Action: Use a string literal of at most 4000 characters.
Longer values may only be entered using bind variables.
插入/更新长度超过4000个字符的CLOB值时,需要使用绑定参数

我不是CodeIgniter用户,但检查CodeIgniter的数据库抽象类可以发现它(顺便说一句:我不会使用CodeIgniter框架,因为这…)


因此,结论是,使用CodeIgniter的助手进行数据库交互时,您不能做您想做的事情,至少不重写它的一些代码。我相信在这种特殊情况下,您必须使用。

向我们展示您如何使用pdo_oci或oci8扩展,以及您在做什么?您连接到的Oracle版本是什么?是否尝试查找错误号?有很多文章描述了它的发生和可能的修复,就像我已经在谷歌上搜索过如何修复它一样。但我什么也没找到。我还找到了你从谷歌给我的url,但我无法访问该url。我不知道为什么,你是对的。我使用了PDO接口,这很有效。Thanks@Furgas:我遇到了类似的问题,您为纯PDO接口提供的链接不起作用。请重新发布有效链接。谢谢你……阿布祖海尔,你能帮我解决这个问题吗?@KusH:我已经修复了链接。@Furgas:我也试过PDO了。使用少于4000个字符的字符串可以正常工作。不适用于超过4000个字符的字符串。