ORA-12899: value too large for column(列に対して値が大きすぎる)
Oracle意味
定義された最大長より長い値が文字/データ列に書き込まれた。例えば 15 文字のテキストは VARCHAR2(10) 列に収まらない。
原因
列幅がデータに対して不足している、マルチバイト文字セット (UTF8) で文字数がバイト上限 (BYTE セマンティクス) を超える、データ移行時の異なる文字セット、連結結果が長くなる。
対処方法
列を広げる: ALTER TABLE my_table MODIFY (my_column VARCHAR2(100)); マルチバイトの内容には CHAR セマンティクスを使う: my_column VARCHAR2(100 CHAR)。長い値を短くする必要がある場合は SUBSTR で切り詰める。エラーメッセージには実際の長さと許容長が示される。LENGTH/LENGTHB であふれたレコードを特定する。
同じデータベースの他の項目
- ORA-06550line/column PLS-... PL/SQL コンパイルエラー
- ORA-04068existing state of packages has been discarded(パッケージの既存の状態が破棄された)
- ORA-01427single-row subquery returns more than one row(単一行副クエリが複数行を返した)
- ORA-30926unable to get a stable set of rows in the source tables(ソース表の安定した行セットを取得できない)
- ORA-08103object no longer exists(オブジェクトがもう存在しない)
- ORA-01843not a valid month(月が無効)
- ORA-14400inserted partition key does not map to any partition(パーティションキーがどのパーティションにも対応しない)