問題タブ [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.
c++ - ORACLE で OCI(c++) を使用した挿入クエリの問題
問題の説明:- そのレコードがデータベースに既に存在する (重複 ==> 主キーが存在する) 場合、そのレコードを Oracle に挿入しています。新しいレコードで更新したいと考えています。
現在、OCI_ERRORを取得した場合にレコードを挿入するときにこれを解決するために、呼び出します
OCIErrorGet( (dvoid *)errhp, (ub4) 1, (テキスト *) NULL, &errcode,errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR);
次に、エラー buf の値が ORA-00001 であるかどうか errbuf をチェックします ==> 存在する場合は一意の制約に違反し、値を更新します
そのレコードが既に存在する場合、データベース内のレコードを検索する以外に同じことを行う方法はありますか?
ORACLE で値が重複している場合、特定のエラーが生成されますか?
助言がありますか?
sql - ora-00933:SQL コマンドが正しく終了していません
次のコードがあります。
終わり;
実行すると、オラクルから次のエラーメッセージが表示されます。
8 行目のエラー: ORA-06550: 8 行目、29 列目: PL/SQL: ORA-00933: SQL コマンドが正しく終了していません ORA-06550: 3 行目、2 列目: PL/SQL: SQL ステートメントは無視されました
私がしようとしているのは、既存の prod_id と prod_name を、ディスパッチ テーブルに挿入された新しいデータとリンクすることです。製品テーブルで prod_name を一意のキーとして設定し、prod_id を主キーとして設定し、両方を配送テーブルで外部キー制約として設定しました。prod_name をディスパッチ テーブルに含めて、テーブルの読者が意味をなさない prod_id を単に与えるのではなく、prod_name を見つける必要があるものなどをより理解できるようにする必要があります。しかし、おそらく私は発送テーブルに prod_id を必要としないと考えていました。助けてください。
ディスパッチ テーブルから prod_id 列を削除した後、コードを変更しました。
終わり; /
そして、一意の制約に関する次のエラー メッセージが表示されました: begin * ERROR at line 1: ORA-00001: unique constraint (DBA_XY.PROD_NAME_UC) violationd ORA-06512: at line 3
java - Java - 例外の最初の原因を見つける
データベースの問題が原因で例外が発生したかどうかを確認する必要があります。例外を受け取り、その原因に「ORA」文字列が含まれているかどうかを確認し、それを返します (「ORA-00001」など)。ここでの問題は、受け取った例外が他の例外の中にネストされていることです。そのため、それがオラクルの例外であるかどうかがわからない場合は、その例外の原因などを調べる必要があります。これを行うためのよりクリーンな方法はありますか?特定の例外の最初の原因 (深くネストされた例外) を知る方法はありますか?
私の現在のコードは次のようになります。
sql - 事前定義されたOraclepl/ SQL例外の完全なリストはどこにありますか?
事前定義されたすべてのOraclepl/ SQL例外の完全なリストはどこにありますか?
このリンクで私はこのリストを見つけました、もうありますか?
oracle - 詳細が不足している Oracle DML エラー
次のような一括挿入操作からエラーをキャッチしています。
出力は次のようになります。
エラー処理コードをテストしているので、エラーが発生しても問題ありません。問題は、Oracle のエラー メッセージに制約名が表示されないことです。つまり、表示されますcheck constraint (.) violated
が、違反したチェック制約がわかりません。
これで何が起こっているのか誰か知っていますか?
(Oracle バージョン 10.2)
oracle10g - COMMIT 時に ORA-00001 (一意の制約違反) を取得していますか?
バッチ ジョブで ORA-00001 (一意の制約違反) が発生しています。ただし、問題のあるレコードが挿入されたときではなく、COMMIT が発行されたときにエラーが発生します。
質問:
- COMMIT でユニーク制約がチェックされるのはなぜですか? (INSERT 時にチェックが行われるように使用できる設定はありますか?)
- 一意の制約違反につながる問題のある SQL/レコードを見つけるにはどうすればよいでしょうか?
どんな助けでも大歓迎です!
追加情報/質問:
「問題のある」制約は、IMMEDIATE および NON-DEFERRABLE としてマークされます。これはトランザクションでオーバーライドできますか?
oracle - 複数のサーバーがデータベースのフラグをチェックして書き込みます
私は、4 台のサーバーと 2 台の Oracle データベース サーバーを備えた環境を持っており、それらの間にストリームがあり、双方向のインスタント レプリケーションが可能です。
ジョブが実行されているかどうかをチェックし、そうでない場合はスレッドでジョブを開始するサーブレットがあります (4 つのサーバーのどれに行くかを制御できません)。これらのジョブのうち、一度に実行できるのは 1 つのみです。ジョブが実行中であることを示すフラグをデータベースに設定しています (サーバーが 4 つあるため、フラグをメモリに保持することはできません)。
同期ブロックでは、ジョブが実行されているかどうかを確認し、実行されていない場合はフラグを設定します。この後、私は仕事を始めます
これは、サーバーが 1 つしかない環境では機能しますが、私のシナリオでは機能しません。
同期ブロック内の 2 つの異なるサーバーにスレッドがあり、両方ともジョブが実行されていないことを確認した後である場合、両方ともフラグを設定しようとします。そのため、一意のキー制約をキャッチできるように不測の事態を組み込みました (各ジョブには、データベースの主キーである ID があります。この値を 1 にハードコードして、データベースに 1 つのエントリのみを含めることができるようにしています)。Springs JdbcTemplate を使用しています
繰り返しますが、これは正しく機能しますが、これを行うためのより良い方法があると想像できます。別のアプローチを提案できますか?データベースをロックする何かが必要なようです(フラグが実行されているかどうかを確認してから、フラグを実行中に設定します)。2 つのデータベースがあることを思い出してください。1 つだけをロックしても機能するかどうかはわかりません。Spring のトランザクションを確認する必要がありますか? それとも何か他のことを提案できますか?
ありがとう。
sql - Oracle DB からゴースト制約を見つける
テーブルに制約がありました
2 週間前に、テーブルを変更し、いくつかの列を追加し、制約 "PK_USERSAPPLICATIONS" を削除し、代理キーを追加しました。Oracle SQL Developer で、制約 PK_USERSAPPLICATIONS がもう存在しないことがわかります。
それにもかかわらず、同じ userid/applicationName の組み合わせで 2 つのエントリを追加しようとすると、エラーが発生します
ステートメントを実行すると
私はゼロ行を取得します。それはどうしてですか?制約 PK_USERSAPPLICATIONS はすでに数週間前に削除されているため、Oracle はこの制約について何の知識も持っていないはずです。また、データベースでも確認できません。
ruby-on-rails - Rails:Oracle制約違反
継承したRailsサイトのメンテナンス作業を行っています。これはOracleデータベースによって駆動され、サイトの開発インストールと本番インストールの両方にアクセスできます(それぞれに独自のOracle DBがあります)。本番サイトにデータを挿入しようとするとOracleエラーが発生しますが、開発サイトには挿入されません。
私が知る限り(私はNavicatをOracleクライアントとして使用しています)、開発サイトのDBスキーマはライブサイトのDBスキーマと同じです。私はOracleの専門家ではありません。誰かが、なぜ私が一方のインストールでエラーが発生し、もう一方のインストールではエラーが発生しないのかを明らかにすることができますか?
ちなみに、devテーブルとproductionregistration_ownershipsテーブルの両方に、country_ownership_id(インデックスPK_REGISTRATION_OWNERSHIPによって駆動される)の重複エントリを含む多くのデータが入力されています。トラブルシューティングのためにさらに情報が必要な場合はお知らせください。まだ申し訳ありませんが、どの詳細が役立つかわかりませんでした。
更新:本番サーバーで制約を削除しようとしましたが、効果がありませんでした。結果がどうなるかわからないので、インデックスも削除したくありませんでした。また、生産の安定性を以前よりも低下させたくありません。
不思議なことに、エラーをスローしていたSQLを手動で実行しようとすると、Oracleは挿入ステートメントを受け入れました(ただし、「ORA-01861:リテラルが一致しませんフォーマット文字列"エラー)。ここで何が起こっているのでしょうか?
mysql - DjangoプロジェクトをMySQLからOracleに移行する
従来のMySQLデータベースで動作するDjango1.1プロジェクトがあります。このプロジェクトをOracle(xeおよび11g)に移行しようとしています。移行には2つのオプションがあります。-SQL開発者を使用して移行SQLスクリプトを作成します。-Djangoフィクスチャを使用します。
SQL DeveloperのSQLスクリプトで作成されたスキーマが、syncdbから作成されたスキーマと一致しません。たとえば、SQL開発者がDATE列を作成する間、DjangoはTIMESTAMP列を予期します。
Djangoフィクスチャでsyncdbを使用することは素晴らしいかもしれませんが、MySQLフィクスチャをOracleにロードしようとすると、syncdbを使用した後、次のようになります。IntegrityError:ORA-00001:一意の制約(USER.SYS_C004253)に違反しました
整合性エラーを引き起こす部分を見つけるにはどうすればよいですか?
更新:私が試したdjangoメーリングリストのアドバイスに従って:
MySQLに接続している間にすべてをダンプします:python manage.py dumpdata> Fixture.json
空のスキーマを使用して新しいOracleユーザーを作成し、db接続をOracleに切り替えます(syncdbを実行しませんでした)
次のコマンドを使用してOracleにデータをロードします:python manage.py loaddatafixture.json
loaddataを使用してもエラーは発生しませんが、サーバーを実行してlocalhost:8000に移動すると、次のようになります。ORA-00942:テーブルまたはビューが存在しません
ありがとう