ORA-01438錯誤的解決方法


問題:項目中突然在更新或者是插入數據的時候報ora01438這個錯,知道是number類型精度不匹配,但是自己debug發現並沒有出現具體的表和字段

 

現象:java.sql.BatchUpdateException: ORA-01438: 值大於為此列指定的允許精度

 

我自己解決的方法:

在dba權限用戶操作

 

alter system set events='1438 trace name Errorstack forever,level 12';

 

查看trace文件

通過oracle的警告文件/home/oracle/app/diag/rdbms/orcl/orcl/trace/alert_orcl.log可以幫助你准確定位trace文件

Tue Nov 04 13:54:09 2014
Errors in file /home/oracle/app/diag/rdbms/orcl/orcl/trace/orcl_ora_28912.trc:
ORA-01438: 值大於為此列指定的允許精度

 

找到指定的/home/oracle/app/diag/rdbms/orcl/orcl/trace/orcl_ora_28912.trc文件

----- Error Stack Dump -----
ORA-01438: 值大於為此列指定的允許精度
----- Current SQL Statement for this session (sql_id=as315uv85ktcx) -----
insert into "test" values(280750000)

 

但是我的真實的環境中並不是簡單的insert語句,這里只能看到具體的是那張表出錯。但是具體的是那個字段和字段的值,我只能分析

項目中數據來源是不是超出number(p,s)的范圍。

雖然解決了問題,但是麻煩。

還有在數據庫設計的時候,應該把關聯字段的類型精度設置相同,再有也應該在數據錄入做類型檢查,出現這個錯應該是可以在設計的時候避免的。

 

自己主要解決不了的問題,在於只能簡單的分析trace文件,而不能分析trace文件的具體信息。

如有大神看到,請不吝賜教。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM