問題タブ [pq]

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 投票する
1 に答える
11784 参照

postgresql - 挿入が実際に成功した場合でも、postgres に挿入した後に ErrNoRows("sql: no rows in result set") が発生するのはなぜですか?

私はgolang-postgresで作業しています:

私がやっていること:

選択クエリを実行します。選択時にエントリが得られない場合は、先に進んで挿入します。そうでなければ、更新、または何か...

問題は、インサートがErrNoRows("sql: no rows in result set")を返すたびに、 INSERT が成功し、行が追加されたことをデータベースで確認できる場合でもです。

また、 lastInsertIDは常に 0 のままですが、DB をチェックインすると、実際の値 (131 など) になります。

以下のコードのコメント 2付近のエラーがどこかにキャッシュされ、再び表示されるようです。

database/sql内でデバッグすると、以下のコード ブロックでこのエラーが返されていることがわかります。

しかし毎回、DB をチェックインすると、データは常に既に挿入されています。

編集:

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

go - 返されるエラーをアンダースコアに割り当てる

postgres データベースと対話するためのドライバーを提供する github.com/lib/pq から Golang コードをいくつか読んでいます。

私がこれに出くわしたコードの中で:

キャンセル機能は次のようになります。

私が知る限り、アンダースコアは型に関する静的アサーションとして使用されていません (したがって、コンパイラは、私が見る限り (この例のように)副作用を評価しません)、そうではありません。 t 作成者がそれを破棄したい場合がある 2 番目のパラメーター。

要約すると、なぜキャンセル関数の結果 (エラー) をアンダースコアに割り当てるのでしょうか?

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

postgresql - 特定の関数から一般的な関数を作成する (リファクタリング)

createUsersテストのためだけに、func を使用して偽の DB にデータを入力しています。

pq( https://godoc.org/github.com/lib/pq#hdr-Bulk_imports )の一括インポート機能を使用しています。

このコードのすべてがうまく機能しています。

必要なもの:

私が今必要としているのは、ユーザーモデルだけでなく、「一般的」にすることです。

次のようなものが必要だと思います:

次のような関数DBBulkInsertで:

問題:

明らか_, err = stmt.Exec(row[0], row[1])に完全に間違っています。DBBulkInsertusers 配列で呼び出す方法がわかりません。

まだ良いです:

のパラメータも削除できるかもしれませんが"users", "username", "age"DBBulkInsert(users, "users", "username", "age")どうすればよいですか? 反射?

0 投票する
0 に答える
41 参照

go - "pq: 申し訳ありませんが、クライアントが多すぎます" - Scan() を使用して行を閉じていますが、どこかで接続リークが発生しています

私のコードは、クエリを作成するたびに DB を開き、QueryRow() を実行し、結果を変数にスキャンしてから、defer を使用して DB と行を閉じるように設定されています。ただし、接続リークが発生していますが、すべてを閉じていると思います。

close ステートメントを defer から取り出して、使い終わったときに閉じようとしました。Goで行挿入のために単一のPostgres DB接続を再利用する方法に従ってください? しかし、私は答えに従っていると信じていますが、それでも運はありません。

ほとんどの場合、うまく機能します。しかし、このコードは一定間隔で実行され、しばらくすると「pq: 申し訳ありませんが、クライアントが多すぎます」というエラーが表示されます。それだけです。