各位帮帮忙,我现在做的一个小项目里,有个奇怪的问题。在我的开发环境下一切都没问题,到了部署的环境会报ORA-01401: 插入的值对于列过大错误
而且不是什么功能都报错,只有一个调用预处理的insert语句会报错。如果在数据库里手动插入一条数据,然后在画面上打开编辑然后保存,没有问题。请问是什么问题呀。
首先插入的关键字不会超常,画面输入项都是一样的,排除了数据库驱动的问题,输入的都是英文的数据,只有两处用到了系统时间,TO_CHAR(SYSDATE, 'YYYY/MM/DD')存放到数据库的varchar2字段里。有谁能给些经验意见,不胜感激。
而且不是什么功能都报错,只有一个调用预处理的insert语句会报错。如果在数据库里手动插入一条数据,然后在画面上打开编辑然后保存,没有问题。请问是什么问题呀。
首先插入的关键字不会超常,画面输入项都是一样的,排除了数据库驱动的问题,输入的都是英文的数据,只有两处用到了系统时间,TO_CHAR(SYSDATE, 'YYYY/MM/DD')存放到数据库的varchar2字段里。有谁能给些经验意见,不胜感激。
解决方案 »
- 多个逻辑处理,一个SQL能搞定吗?求助
- Oracle_GoldenGate与Quest_SharePlex详细对比
- 使用TOAD打开ORACLE10。2中存储过程报错,'IN' is not a valid integer value
- 有一个项目要把SQL Server2000数据库迁移到Oracle中
- 游标 游标 请帮忙解答谢谢
- 如何动态知道表空间的大小 ~
- 在oracle9i中怎样连接其它异构数据库?
- Oracle存储过程里能否执行下面的语句?
- 快照问题
- SSH能连接linux上oracle数据库,另一台服务器不能通过jdbc连接
- ORA-01775,同义词的循环链?
- 用bat文件调用sqlplus来执行sql文件,碰到乱码的问题
字段定义的长度绝对没有问题,即便是画面上只输入一个英文字符也会出错。
每个子段的定义除了关键字都可以是空。
问题很可能是两个数据库环境不同,谁有这方面的经验那,不胜感激。
select LENGTH(TO_CHAR(SYSDATE, 'YYYY/MM/DD')) from dual
---
10你看一下varchar(??) 其中的问号的数据有没有大于等于10
建议分别试试:
insert into voc_questionnaire (col1) values('00001');
insert into voc_questionnaire (col1,col2) values('00001',?);
insert into voc_questionnaire (col1,col3) values('00001',?);
....
看看到底是那个列的insert出错了。缩小范围,再分析原因
把你的开发库和生产库的结构输出来看看有没有差异
让你安装9楼的方法一条一条试试不就知道具体原因了。(试,当然是把他们写到代码中,不是在plsql中执行)目前,很多开发人员,说什么好呢?