問題タブ [sqlexception]
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.
sql - PostgreSQL SQL 例外がユーザー エラーかシステム エラーかを判断する
私は PostgreSQL を利用した RESTful Web サービスを実装しています。PostgreSQL が SQLException をスローした場合、値の入力文字列が長すぎるなどのエラーの場合、HTTP 応答ステータスは 400 Bad Request になるか、ディスクがクラッシュした場合は 500 Internal Server Error になります。
人間には、例外のメッセージから明らかです。しかし、私のプログラムが SQLException を見て、問題がユーザー・エラーなのかシステム・エラーなのかを推測できる方法はありますか?
SQLについてはよくわかりません。SQLState は 5 文字の文字列で、最初の 2 文字が「クラス コード」であることに注意してください。
これまでの私の推測は次のとおりです。
クラス 00: 正常終了、例外はスローされません。
クラス 01: 警告。この場合、SQLException はスローされますか? その場合、結果はおそらく 400 Bad Request になるはずです。
クラス 02: データなし (結果が返されない場合の正常な結果?)
クラス 03: SQL ステートメントがまだ完了していません: おそらくプログラミング エラーであり、エンド ユーザー エラーではないため、500 Internal Server Error
クラス 08: 接続例外: 明らかに 500 内部サーバー エラー
クラス 09 - 21: おそらく 500 内部サーバー エラー
クラス 22: データ例外。私が取り組んでいる特定の例では、「22001 ERROR: value too long for type character vary(250)」が発生します。これは 400 Bad Request として返されます。(SQL ステートメントが実行される前に「名前」フィールドの長さの検証がありますが、実際に格納される値はフル パス名、つまり、他のものに追加された名前です。) 他のクラス 22 エラーに対しては、おそらく 400 Bad Request を返すことができます。 、それらの多くはプログラミング エラーに起因しますが。
他のクラスは、500 Internal Server Error のように見えますが、通常はより正しいステータスです。
java - データのSQLExceptionをキャッチする方法は?(例:データが存在しない)
この質問の解決策を長期間検索しましたが、それでも答えを得ることができませんでした。JAVAで作成したアプリケーションで検索ボックスを作成しようとしています。
データベースから例外をキャッチし、列が存在しないこと、または重複データが存在しないことをユーザーに通知したいのですが、どうすればこれを実行できますか?
java - バッチ処理で例外を含む正確なSQLクエリを取得する方法
私は以下を実行したい:
(PROCESSING DBの取り出した行からPRESENTATION DBへの行の転送)
この特定の行なしでバッチ処理を再実行できる例外の原因となった行を特定するにはどうすればよいですか? (行のフィールド hasError を更新することにより)。
現在、オブジェクトをバッチで保存していないので、エラーが発生した場合は行をマークし、その行をスキップして別の行の処理 (つまり、保存/転送および削除) に進むことができます。
ありがとう!
アップデート:
OK、次のコードを使用して行を追跡しました (いずれかの行でエラーが発生した場合)。
そして、次の行を追加しました:
エラーの有無にかかわらず変更を確認できますが、BatchUpdateException が機能していないようです。
c# - ネストされた linq クエリでの「無効な列名 [ColumnName]」
最後の更新
多くのテストを行った後、SQL 2000 と SQL 2005 で同じデータセット (この場合は Northwind) テーブルに対して同じクエリを実行すると、2 つの異なる結果が得られることに気付きました。SQL 2000 では、問題のエラーが発生します。SQL 2005 では成功します。
そのため、linqpad によって生成されたクエリは sql 2000 では機能しないと結論付けました。これを再現するには、次のコマンドを実行します。
SQL 2000 の Northwind DB で。SQL 変換は次のとおりです。
元の質問
次のクエリがあります。
結果:
これが機能するため、タイムスタンプへの最後のクエリと関係があることがわかりました。
クエリは簡略化されています。目的は、一連の変数でグループ化し、このグループ化がデータベースで最後に発生した時間を表示することです。
これらの結果を生成するためにLinqpad 4を使用しているため、Timestampは文字列を提供しますが、FirstOrDefaultは理想的ではないオブジェクト全体を提供します。
更新
さらにテストしたところ、SQLException の数とタイプが groupby 句で作成されたクラスに関連していることがわかりました。そう、
結果は
c# - Max(x=>x.Time) vs OrderByDescending(x=>x.Time).First().Time
ネストされたlinqクエリで「無効な列名[ColumnName]」に関する関連する質問を提起しました
ここで尋ねられたように、グループの一番上の行を取得しようとしています:
Linq - 各グループのトップ値
ただし、Maxを使用して受け入れられた回答とは異なる方法でアプローチしました。私はこのようにしました:
これにより、エラーが発生しますSqlException: Invalid column name 'ID'
Max 関数を使用すると、次のようになります。
私が欲しかった時間のリストを返します。
私の理解では、それらは異なるが同等の呼び出しです。最初の呼び出しで SQL エラーが発生するのはなぜですか?
更新
最初のクエリ用に生成された SQL クエリは次のようになります。
私はそれを減らすことができましたが、同じエラーを維持しています:
Update2
一部の回答では、これらのクエリは論理的に異なるとされていますが、ノースウィンド テーブルでこのようなことを行うと、同じ結果が得られます。
したがって、クエリが異なる、Max がリストの最大値ではなく Sum を指定している、または先に進む前に IQueriable をリストに変換する必要があるという 3 つの回答のいずれも受け入れることができません。
android - AndroidでクエリするときのSQLiteException
次の行で、「バインドまたは列インデックスが範囲外です」という例外が発生します。
指定されたIDがデータベースに存在するかどうかを確認したいのですが、常にクエリがこの例外をスローし、何が問題なのかわかりません。私はこれを試してみましたが、例外は同じです:
これは私がプログラムした方法です。ここに何か問題がある場合は、教えてください:
sql - Ibatis パラメータの初期化の問題
私のアプリケーションは、SQL ステートメントへの parametermap の初期化に関して例外が発生しています。エラーは次のとおりです。
定義は互いに完全に永続的です (Java 側と xml 側)。
何か案は?
java - この BatchUpdateException はどういう意味ですか?
stmt.executeBatch() ステートメントからこの BatchUpdateException を取得しています。
インターネットには、この例外メッセージに関する情報がありません。どういう意味ですか?トレースバックには、ストアド プロシージャが失敗したこと以外に役立つ情報は含まれていません。
wpf - LINQ to SQL で SqlException をキャッチする方法
私の WPF アプリケーションでは、LINQ to SQL を使用しているため、 を呼び出すSubmitChanges()
と例外がスローされますが、キャッチできません。
関連するコードは次のとおりです。
そして、これは上記がスローする例外です:
SqlException
WPFアプリケーションでキャッチする方法は?
SubmitChanges()
例外がスローされないことがわかりました。しかし、例外を発生させたコードは、 を呼び出すコードですSubmitChanges()
。
編集:
完全な例外は次のとおりです。
java - Java PreparedStatement および Alter Table 構文エラー
PreparedStatement を使用して、テーブルのフィールドにインデックスを作成する必要があります。私が実行しなければならないクエリは次のとおりです。
PreparedStatement
そのため、クエリの同じテキストでインスタンスを作成し、それに対してexecuteUpdate()
メソッドを実行しました。しかし、実行時に SQL 構文エラーが発生します。これはPreparedStatement
インスタンスの作成です:
私が得るこのSQLException:
どうすればこれを解決できますか?
前もって感謝します、
アントニオ