Olacle Databaseを9iから10gに移行しようとしています。
試用版のOracle10g(10g Release 2 (10.2) for Microsoft Windows (32-Bit) )
をダウンロードして既存のアプリケーションで動作させてみましたが、
9iのときは正常に挿入できたデータがエラーになってしまいました。
エラー内容は「 ORA-01400: ("スキーマ名"."テーブル名"."フィールド名")にはNULLは挿入できません。 , 失敗しました::行1」
プログラムをチェックすると確かに、Empty値を入れてInsertしていましたが、9iでは0に自動的に変換されて登録されていました。(フィールドタイプはNumber(1))
これは、プログラムのほうをEmpty→0にすべて変更しなければならないでしょうか?
それから、このほかにも9iから10gに変更するにあたって注意する点はあるでしょうか?
Oracle社のページやネットで調べたのですが、よくわからなかったので、わかりやすいページや書籍など教えてもらえると助かります。
No.3ベストアンサー
- 回答日時:
私は、8iから10gに移行しました。
(アプリVB)特に更新系でも動作しました。
ProCとかの場合コンパイルオプションでキャラクタのタイプでV6CHARとかを指定すると。古いキャラクタの動作をさせる(Varcharを使用しない)をわざと指定したりしますけど。
まずは項目属性はどうなってますか。NotNullになってませんか10g側の定義は。
(sqlplusでdesc テーブル名;)
あとは初期化パラメータも確認してみましたか。
ありがとうございます。
>NotNullになってませんか10g側の定義は
なっています。
9iのときからNotNullなのですが、9iでは自動的に0に置き換えられてエラーが出なかったのですが、
10gではエラーになってしまいます。
10gの動作のほうが正しい気がしますので、やはりアプリを修正しなければならないかも。
初期化パラメータというのは知りませんでした。調べてみます。
No.2
- 回答日時:
以下のことを確認してください。
・テーブルの定義が同じということですが、 USER_TAB_COLUMNSで確認されました?
(誰かがこっそりと直接ALTER TABLE流してたりなど)
・BEFORE INSERTのTRIGGERとかないですか?
ありがとうございます。
作業は自分のパソコンでスタンドアロンで行っていますし、その作業の間ずっと机にいたので、
誰かがこっそりいじった可能性は低いですが、
USER_TAB_COLUMNS確認してみます。
No.1
- 回答日時:
9iから10gへの移行の注意点は分かりませんが、
INSERTのエラーについては、
テーブルの定義はまったく一緒でしょうか?
テーブルを作成するときに、省略時にデフォルトを設定できるオプションがあります。
また、そのオプションは後からでも追加できます。
9iでは、デフォルトオプションがついていて、10gのテーブル作成時には忘れていたということはありませんか?
ありがとうございます。
テーブルの定義もアプリケーションもまったく同じなのです。
9iで使用していたテーブル作成のプログラムをそのまま実行しただけなので。
9iのSql*Plusで、あえてNULL禁止項目になにも指定せずINSERTを実行してみたら、エラーになりました。
だから本来なら、エラーになるのが正しいのかもしれませんが。
アプリケーションのプログラムではバインド配列でINSERTしているのでその辺の影響でしょうか???
Oracle社のHPでみつけた資料によると、やはり9iから10gへの移行では特にアプリの変更はいらないようですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- ルーター・ネットワーク機器 AU光10G回線について 6 2022/07/25 00:12
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- ダイエット・食事制限 ダイエット中に食べすぎてしまいました…。 朝 プロテイン15g 、きゅうり、無脂肪牛乳100ml、バ 3 2023/01/12 01:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オラクルのUPDATEで複数テーブル
-
テーブル定義書(Oracle) 【IX】...
-
CASEでBETWEEN制約
-
truncate tableを使って複数の...
-
エラーを起こす方法
-
既にテーブルが存在する場合の...
-
現在、VBAにてUNICODEのCSVを出...
-
データ削除とSQL*Loaderでのイ...
-
教えてください。Oracleで作成...
-
複数テーブルへの問合せ
-
複数レコードの複数フィールド...
-
[materialized]マテリアライズ...
-
任意のテーブルをdrop tableしたい
-
SQL 外部結合について
-
SQL HAVING句の使い方について
-
sequenceの値の表示
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
Accessで今日から5日後
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
エラーを起こす方法
-
既にテーブルが存在する場合の...
-
データ削除とSQL*Loaderでのイ...
-
テーブル定義書(Oracle) 【IX】...
-
Where句のNot条件をAnd条件にし...
-
複数レコードの複数フィールド...
-
CASEでBETWEEN制約
-
[materialized]マテリアライズ...
-
AccessからOracle DB(View)を...
-
ORA-01630の対応方法について
-
oracle ora-02298
-
テーブルDROPできないのです。。。
-
Olacle Database 9iと10gの違い
-
viewの性能
-
accessのデータをoracleへinser...
-
pro*cobol ⇔ oracle のデータ型...
-
テーブルに変更があったらCSV出力
-
任意のテーブルをdrop tableしたい
おすすめ情報