Dalam atur cara Go, cuba memasukkan data ke dalam jadual PostgreSQL menggunakan sambungan pangkalan data tunggal untuk setiap mesej yang diterima daripada RabbitMQ mengakibatkan ralat kerana melebihi bilangan maksimum sambungan.
Isunya terletak pada cara pertanyaan SQL dilaksanakan dalam Go. sql.DB ialah kumpulan sambungan dan bukannya satu sambungan. Ia membuka sambungan seperti yang diperlukan dan menggunakan semula sambungan melahu, tetapi dalam kes ini, sambungan tidak dilepaskan dengan betul.
Masalah timbul apabila menggunakan db.QueryRow tanpa memanggil Scan pada nilai *Row yang dikembalikan. *Row memegang rujukan kepada sambungan, yang dikeluarkan secara automatik apabila Imbasan dipanggil. Walau bagaimanapun, dalam kod yang disediakan, Imbasan tidak dipanggil, menyebabkan sambungan bertimbun dalam kumpulan sambungan.
Untuk menyelesaikan masalah ini, penyelesaiannya ialah sama ada menggunakan db.Exec jika output tidak diperlukan, atau untuk memanggil Imbas pada nilai *Baris yang dikembalikan oleh db.QueryRow.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Keletihan Sambungan PostgreSQL Apabila Memasukkan Baris dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!