谁一开始就是大神?

yii2+oracle文章写入[2.0]

在oracle中字段类型为varchar2(4000)写入数据没有超出上限

插入测试数据11122223333不长的不会报错,内容长了之后会报错 仅能绑定要插入 LONG 列的 LONG 值
错误提示

这个是错误属于oracle的错误,实际上,你的长度确实超过了其能保存的长度
你的数据库字符集可能是UTF-8的,对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,所以报错。
你可以这样测试这个问题:
你说,插入测试数据11122223333不长的不会报错,内容长了之后会报错,你插入,4000/2-1的长度的字符串,看看会不会报错,然后,看看4000/2的字符串长度会不会报错,如果报错,再看看4000/3-1长度的字符串会不会报错,再看看4000/3的长度会不会报错
还有就是,明确指定绑定VARCHAR处理:参考php的文档:
http://php.net/manual/zh/function.oci-bind-by-name.php#92334
先尝试下吧
请问要是用 ActiveRecord 方式怎么保存成功呢?

赞(0) 打赏
未经允许不得转载:菜鸟之家 » yii2+oracle文章写入[2.0]

评论 抢沙发

登录

找回密码

注册