問題タブ [ora-00001]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1466 参照

oracle - 同一のOracleデータベース設定:そのうちの1つだけで例外

編集:エラーの原因と私がどのように見つけたかについては、この質問の最後を見てください。

Oracleデータベースにデータをバッチ挿入するアプリを実行すると、Hibernateから非常に奇妙な例外がスローされます。エラーは、OracleデータベースORA-00001から発生します。

「重複(一意)キーを持つレコードを挿入しようとしたことを意味します。このエラーは、既存のレコードが重複(一意)キーを生成するように更新された場合にも生成されます。」

別のマシンで同じテーブル(まったく同じ定義)を作成したため、アプリで同じテーブルを使用しても同じエラーが発生しないため、エラーは奇妙です。また、すべてのデータがデータベースに挿入されるため、実際に拒否されるものはありません。

2つの設定の間で何かが異なる必要がありますが、私が見ることができる唯一の違いは、発行時に取得するバナー出力です。

私に問題を与えるデータベース: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
機能するデータベース: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

テーブルの定義、入力、および私が作成したアプリは、どちらも同じです。関連するテーブルは、基本的に、複合ID(serviceid、date、value1、value2)を持つ4列のテーブルです。

何が間違っている可能性があるかについてのアイデアはありますか?私は何度かクリーンを開始し、両方のテーブルを削除して同じ理由で開始しましたが、それでもデータベースからエラーが発生します。

出力のいくつか:

問題の原因をどのように見つけたのか

APCとik_zelfのおかげで、このエラーの根本的な原因を特定することができました。Quartzスケジューラが本番データベース(エラーが発生した場所)に対して誤って構成されていることが判明しました。障害のないOracleサーバーに対して実行されているジョブの場合、<cronTriggerExpression>0/5 * * * * ?</cronTriggerExpression>5秒ごとにバッチジョブを実行していました。他のOracleサーバーでは1分に1回で十分であると考え、クォーツスケジューラを* * / 1 * * *?で設定しました。これは間違っていることが判明し、毎分実行する代わりに、毎秒実行しました!

各ジョブには約1.5〜2秒かかり、2つ以上のジョブが同時に実行されていたため、サーバーで同時に挿入が発生していました。したがって、529個の要素を挿入する代わりに、1000から2000個の挿入を取得していました。crontrigger式を他の式と同じに変更し、5秒ごとに実行すると、問題が修正されました。

何が悪かったのかを見つけるために、hibernate.cfg.xmlでtrueを設定し、テーブルの主キー制約を無効にする必要がありました。

0 投票する
3 に答える
903 参照

sql - 作成されたトリガーの問題 (プライマリ キー シーケンスから)

最大値なしで 1 から始まるシーケンスを作成しました 主キーを自動的に挿入するためのトリガーを作成しました 主キーが一意で null でない必要があるテーブルの制約も設定しました

結果:

1 行目のエラー:
ORA-00001: 一意の制約 (USER.PK_MY_TEMP) に違反しています

テーブルMY_TEMPには、IDフィールドの1から338までの値がすでに含まれています

では、トリガーと挿入ステートメントでこれをどのように処理すればよいでしょうか。

0 投票する
1 に答える
2940 参照

oracle - ORA-00001: 一意の制約 (DEV.X_PK) に違反しています

データを Web サービスに送信する Java コードと、そのデータを使用するポートレットがあります。

Java エージェントによって送信されたデータは TMP テーブルに配置され、マージ手順によってポートレットが使用する MAIN テーブルにマージされます。

Java エージェントを実行すると、次のエラーが表示されますが、重複した主キーが送信されないようにしています。

主キー制約をオフにしてみましたが、無駄でした。次に、使用されているすべてのテーブルを削除しようとし、再度作成しました。しかし、まだ運がありません...

興味深いことに、手動でデータを TMP に挿入してマージ プロシージャを実行でき、エラーは発生しません。

どんな助けでも大歓迎です...

0 投票する
1 に答える
569 参照

hibernate - ハイバネート エラー メカニズム

hibernate + spring で Web サイトを作成しています。私のウェブサイトの管理に仕事を追加するための仕事フォームがあります。役職は、データベースと休止状態の xml ファイルで一意に宣言されます。

すでにある役職を追加しようとすると、一意の制約のためにジョブが正常に追加されず、ログに例外が記録されます。

この例外を取り除き、「ジョブは既に存在します」などのユーザーフレンドリーなメッセージを表示する方法はありますか?

挿入する前にテーブル全体をスキャンしたくないので、他の方法を提案してください

0 投票する
4 に答える
3257 参照

oracle - オラクルのシーケンスがめちゃくちゃになり、それが原因で挿入が失敗しますか?

Oracle データベースにドメイン オブジェクト インスタンスを保存するためにシーケンスを使用しています。データベース内の各テーブルのシーケンスがあります。たとえば、ユーザーまたはリソースで保存機能を使用すると、最初の試行で新しいリソースが作成されましたが、使用された ID は 70 でしたか? テーブルの最大 ID が 41 であるため、シーケンスは適切な次の番号 - 42 を示しています。新しいリソースを挿入するために id=70 が使用されたのはなぜですか?

また、次の試行から、すべての挿入がこのエラーで失敗します

これはコードの再構築後に発生しているため、何が問題なのかわかりません...コードを新しいパッケージに移動した場所..

編集:私は原因を見つけました、私の応答を見てください..ありがとうみんな

0 投票する
1 に答える
39242 参照

oracle - 制約違反の例外ORA-00001

Oracleデータベースを使用しています。私たちのサービスへの呼び出しで頻繁に失敗が見られます。ログを見ると、テーブルに次の例外があります。

java.sql.BatchUpdateException:ORA-00001:一意性制約(DBSCHEMA.IDX_CO_DETAILS)に違反しました。

テーブルのインデックスでインデックス名DBSCHEMA.IDX_CO_DETAILSを確認しました。

列は含まれていません(INCLUDE_COLUMNはnullです)。この制約が何であるかをどうやって知ることができますか?それは主キーの制約ですか?

ORMにはHibernateを使用しています。以下は、休止状態のコンテキストでのバックトレースです

0 投票する
2 に答える
3518 参照

sql - ORA-00001: 一意の制約チェック データ ソース

プロシージャを実行すると、ORA-00001: 一意の制約エラーが発生しました。テーブル名を確認したところ、主キーが 4 つあります。(a.sr_date, a.int_key, b.cli_no, b.act_no) from table1 a, table2 b ソース テーブルをチェックする方法を知りたいので、エラーの原因となっているデータが何であるかがわかります。問題。どんな助けにも感謝します。ありがとうございました。

0 投票する
1 に答える
2036 参照

java - ORA 000001 ユニーク制約違反

dep_id と emp_id の主キーを持つテーブルへの Insert ステートメントがあります。私の Java プログラムは、新しいレコードの新しい emp_id を生成して挿入します。たとえば、dep_id = 100 および emp_id = 25 の場合、dep_id = 100 および emp_id = 26 のレコードを挿入できませんが、dep_id = 100 および emp_id = 27 の場合は挿入できます。その組み合わせ (dep_id = 100 および emp_id = 26) の何かが存在する場合、ステートメントを選択します。そのようなものは何もありません。私はまだ dep_id = 100 および emp_id = 26 から DELETE を実行し、念のためコミットしてから挿入しようとしましたが、それでも機能しません。何が間違っている可能性がありますか? コードは次のとおりです。変更された DDL および Insert ステートメント (Eclipse コンソールから取得)

)

Insert ステートメント自体には、値として別の Insert ステートメントがあることに注意してください。この Insert ステートメント (メインのステートメント) は、アプリの他の多くの場所で使用されます。また、私が使用する dep_id 100 はテスト用の dep_id です。私以外誰も使っていません。

0 投票する
1 に答える
5903 参照

plsql - PlSQLトリガー・エラーORA-0000 ORA-06512:

このトリガーを1週間前に作成しましたが、コンパイルエラーはありませんでしたが、レコードを入力すると、次EMP_REPORT のようなエラーメッセージが表示されます。

どこが間違っていたのかわかりません。plsは私を助けます:(

plsは、制約とその主キーを削除できないことに注意してください

0 投票する
1 に答える
8153 参照

oracle - PL / SQL(INSERT / UPDATE)の一意の制約が、sequencel.nextvalによるトリガーのエラーに違反しました

トリガー(pl / sql oracle 10g)を使用して、レコードを別のテーブル(MICL_SUPERVISORS)に挿入/更新したい。

トリガーが起動すると、次のようなエラーが発生します

ORA-00001:一意の制約に違反しました。

SUPIDシーケンスから追加したいので、それが起こることを知っています

そして、これはループ内で起こっています。

SUPID列は私のテーブル(MICL_SUPERVISOR)の主キーです。したがって、その制約を削除することはできません。

自動インクリメントを試してみましたが、時間がかかり、うまく機能せず、遅いです。このテーブルには何千ものレコードがあります。私はそれをしました

このエラーのため、私は小さな調査を行い、トリガー内でseq.nextvalを使用できないことがわかりました。だから私の質問は、これを達成するための簡単で正確な方法はありますか?

これがコードです(if句else部分が正常に機能している場合はすべて内部で発生します。カーソルを使用していることに注意してください。開いているカーソル内でこれがすべて発生します)

不明な点がある場合は、このシナリオについてさらに説明します。誰かがこの問題の解決に役立つことを願っています。