どうも、カメ助(@kamesuke_blog)です。
業務でOracleDBのテストデータ作成時に「ORA-12899: 列”XXX”の値が大きすぎます(実際: 5、最大: 4)」のエラーが発生しました。ORA-12899エラーの原因と対処方法について調べたので共有します。
この記事はこんな人にオススメ
・ORA-12899エラーの原因を知りたい
・ORA-12899エラーの対処方法を知りたい
Oracleユーザーの参考になれば幸いです。
ORA-12899エラーの原因
ORA-12899エラーは、DBのカラムサイズ以上のデータを登録したことが原因です。
例えば【ORA-12899: 列”Schema”.”TEST_TABLE”.”MEMO”の値が大きすぎます(実際: 5、最大: 4)】の場合は、TEST_TABLEのMEMOカラム(最大4バイト)に5バイトのデータを登録しようとしてエラーになっています。
続いてORA-12899の対処方法を見ていきましょう。
ORA-12899の対処方法
ORA-12899エラーは、DBのカラムサイズより大きいデータを登録しようとするので発生します。そのため、DBのカラムサイズより大きいデータが入らないようにすれば解決します。
対処方法としては2つがあります。
- DBのカラムサイズを拡張する ← オススメ
- 登録するデータサイズを小さくする
それぞれについて説明していきます。
対処法①:DBのカラムサイズを拡張する
登録するデータサイズ以上になるようにDBのカラムサイズを拡張して、ORA-12899エラーが発生しないようにします。
具体例として、以下ではTEST_TABLEのMEMOカラムのサイズを8バイトに拡張しています。
1 |
ALTER TABLE TEST_TABLE MODIFY (MEMO VARCHAR2(8)) ; |
基本的には、この方法がオススメです。
登録の可能性があるデータサイズよりも少し大きめのカラムサイズに拡張しておこう!
対処法②:登録するデータサイズを小さくする
この方法はあまりオススメではありませんが、登録する前にプログラムなどの処理で登録する文字サイズを超えないようにしましょう。
DBのカラムサイズの確認方法は、以下にまとめていますので参考にしてください。
【Oracle】文字数とバイト数を調べるSQL(ORA-12899)
まとめ
ORA-12899エラーの原因と対処方法について紹介しました。
ORA-12899エラーの対象方法は以下の通りです。
- DBのカラムサイズを拡張する ← オススメ
- 登録するデータサイズを小さくする
ORA-12899のエラーは、DBのカラムサイズを拡張して対処しましょう!
コメント
コメント一覧 (1件)
[…] 【Oracle】ORA-12899: 列”XXX”の値が大きすぎます(実際: 5、最大: 4)の原因と対… […]