起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: lily

平台unicode字符设置问题**

[复制链接]
 楼主| 发表于 2009-2-19 11:18:23 | 显示全部楼层
还是不行,报ApplyUpdates method, ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
回复 支持 反对

使用道具 举报

发表于 2009-2-19 11:23:10 | 显示全部楼层
不对吧,这好像是另一个问题。
楼上是否搞错数据类型了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 11:29:48 | 显示全部楼层
又检查了一遍确实没有,底层数据库我也看了,字段类型确实也是nvarchar2的类型
回复 支持 反对

使用道具 举报

发表于 2009-2-19 11:34:48 | 显示全部楼层
楼主,参考一下这个。
http://hi.baidu.com/rbtk/blog/item/c74c4ec2e53f8635e5dd3b1d.html

应该是Oracle不支持超过4000字节Varchar2
回复 支持 反对

使用道具 举报

发表于 2009-2-19 11:35:46 | 显示全部楼层
A:你的数据库字符集可能是UTF-8的,对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。

这种情况下oracle会把data_length长度超过4000的当做LONG型处理,

你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段,所以报错。 建议减小字段长度或拆分。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-19 11:42:02 | 显示全部楼层
我们的字符集确实是utf8的,这样解释应该是合理的了。这个方向基本上我就放弃了。
但是原本我们想升级为10g的数据库,这样我就可以设计为clob类型了,但是另外的问题有爆发出来。就是使用10g了以后,原本我们设计为isunicode的字段,长度为18的话,只能显示9位数字后面都是乱码,但是数据库端是正常的。但是如果不选isunicode,就可以输入18位的数字。这个问题怎么解决呢,字符集仍然是utf8,如果这个问题不解决,我就不能升级到10g。郁闷
回复 支持 反对

使用道具 举报

发表于 2009-2-19 12:40:19 | 显示全部楼层
楼主,可否做一个客户端的导数据工具从9导入到10试试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 12:25:17 | 显示全部楼层
做一个客户端的导数据工具从9导入到10是什么意思呢?我不太清楚具体要进行什么操作?
回复 支持 反对

使用道具 举报

发表于 2009-2-23 13:32:29 | 显示全部楼层
就是找一个,或者自己做一个导数据的工具。
1、将Oracle9的数据读取到本地
2、再将其写入到Oracle10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 14:45:34 | 显示全部楼层
本来9i的就可以直接导入到10g里面的啊,这样做的目的是说直接导入有可能会对数据有影响是这个意思吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-26 19:56 , Processed in 0.037132 second(s), 11 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表