JavaからMySQLを利用するとき、DBの型の最大長を越える値を挿入すると

SQLExceptionのサブクラスDataTruncation(データが切り捨てられた場合の例外)がスローされるため、
JDBCドライバの接続のURLで

jdbc:mysql://localhost/dbname?jdbcCompliantTruncation=false
(?以降の部分)
とすることで、例外を発生させないようにしていましたが、Oracle+Javaではどうすればよいのでしょうか。

MySQL+PHPのときはエラーは出ずに当たり前のようにデータ切り捨てられながらINSERTされると記憶しているのですが、
そもそもOracleでもMySQL+Javaのように例外が発生するものなのでしょうか。
(試せば済む話ですが、職場はDB操作が本番環境しかありません。)

また、仮に例外が発生しても、(データは切り捨てられつつも)INSERTは実行されているのでしょうか。

回答の条件
  • 1人3回まで
  • 登録:2008/09/08 20:56:57
  • 終了:2008/09/09 19:58:33

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/09/08 22:42:12

ポイント60pt

エラーは出ずに当たり前のようにデータ切り捨てられながらINSERTされる

これ、MySQL だけの特殊仕様です。性能と引き換えの。

なので、他のDBではまずこういった動作にはなりません。


直接試してないので、Exception の種類は忘れましたが、Oracle に限らず制限長を超えるデータは

INSERT or UPDATE 出来ません。

Exception が出る&実際にも INSERT or UPDATE 出来ないです。

id:kyoko55

ありがとうございます。

エラーが出ずにデータが切り捨てられるのがごく普通だと思っていました。

とても勉強になりました。

2008/09/09 19:58:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません