Rumah >pembangunan bahagian belakang >Golang >Ralat Google Cloud Spanner: Kumpulan sesi tidak sah
editor php Strawberry membawakan anda penyelesaian kepada ralat Google Cloud Spanner. Apabila menggunakan Google Cloud Spanner, kadangkala anda menghadapi ralat "Kolam sesi tidak sah". Ralat ini biasanya disebabkan oleh konfigurasi kolam sambungan yang salah atau melebihi had. Dalam artikel ini, kami akan memperincikan cara mengenal pasti dan menyelesaikan isu ini supaya aplikasi anda berjaya menggunakan perkhidmatan Google Cloud Spanner.
Saya mempunyai kod Go berikut menggunakan pustaka Spanner:
package main import ( "log/slog" "log" "fmt" "context" "cloud.google.com/go/spanner" ) func createClient(ctx context.Context, db string) (*spanner.Client, error) { sessionPoolConfig := spanner.SessionPoolConfig{ TrackSessionHandles: true, InactiveTransactionRemovalOptions: spanner.InactiveTransactionRemovalOptions{ ActionOnInactiveTransaction: spanner.WarnAndClose, }, } dataClient, err := spanner.NewClientWithConfig( ctx, db, spanner.ClientConfig{SessionPoolConfig: sessionPoolConfig}, ) if err != nil { slog.Error("failed to create the spanner client", "err", err) return nil, err } defer dataClient.Close() _ = dataClient return dataClient, nil } var dbLink = "projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME" func main() { ctx := context.Background() snapperClient, err := createClient(ctx, dbLink) if err != nil { log.Fatalf("failed to create a spanner client, error=%s", err.Error()) } row, err := spannerClient.Single().ReadRow(ctx, "DATA_TABLE", spanner.Key{THE_KEY}, []string{"THE_COLUMN"}) if err != nil { slog.Error("failed to get the DATA from spanner", "error", err.Error()) return nil, err } ... }
Ini menghasilkan log ralat berikut:
2023/11/30 22:40:03 ERROR failed to get the DATA from spanner id=4 error="spanner: code = \"InvalidArgument\", desc = \"invalid session pool\""
Saya tidak percaya pelayan dapat mengakses pangkalan data yang ditentukan oleh Google Cloud Spanner, tetapi saya tidak mendapat ralat penciptaan klien Spanner. Bagaimana untuk membetulkan ralat kumpulan sesi tidak sah
ini? invalid session pool
错误?
您在返回之前关闭 createClient
内部的客户端。删除 defer dataClient.Close()
createClient
sebelum kembali. Alih keluar defer dataClient.Close()
dan ia akan berfungsi seperti yang anda jangkakan. 🎜
func createClient(ctx context.Context, db string) (*spanner.Client, error) { sessionPoolConfig := spanner.SessionPoolConfig{ TrackSessionHandles: true, InactiveTransactionRemovalOptions: spanner.InactiveTransactionRemovalOptions{ ActionOnInactiveTransaction: spanner.WarnAndClose, }, } dataClient, err := spanner.NewClientWithConfig( ctx, db, spanner.ClientConfig{SessionPoolConfig: sessionPoolConfig}, ) if err != nil { slog.Error("failed to create the spanner client", "err", err) return nil, err } // Remove this defer dataClient.Close() // Also this isn't doing anything _ = dataClient return dataClient, nil }
Atas ialah kandungan terperinci Ralat Google Cloud Spanner: Kumpulan sesi tidak sah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!