人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaからMySQLを利用するとき、DBの型の最大長を越える値を挿入すると
SQLExceptionのサブクラスDataTruncation(データが切り捨てられた場合の例外)がスローされるため、
JDBCドライバの接続のURLで

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

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

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

●質問者: kyoko55
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Java JDBC localhost MySQL Oracle
○ 状態 :終了
└ 回答数 : 1/2件

▽最新の回答へ

1 ● b-wind
●60ポイント ベストアンサー

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

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

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


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

INSERT or UPDATE 出来ません。

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

◎質問者からの返答

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ