Der
php-Editor Strawberry bietet Ihnen eine Lösung für den Google Cloud Spanner-Fehler. Bei der Verwendung von Google Cloud Spanner tritt manchmal der Fehler „Ungültiger Sitzungspool“ auf. Dieser Fehler wird normalerweise durch eine falsche Konfiguration des Verbindungspools oder eine Überschreitung des Grenzwerts verursacht. In diesem Artikel erfahren Sie, wie Sie dieses Problem identifizieren und beheben, damit Ihre Anwendung den Google Cloud Spanner-Dienst erfolgreich nutzen kann.
Ich habe den folgenden Go-Code, der die Spanner-Bibliothek verwendet:
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 } ... }
Dies führt zu folgendem Fehlerprotokoll:
2023/11/30 22:40:03 ERROR failed to get the DATA from spanner id=4 error="spanner: code = \"InvalidArgument\", desc = \"invalid session pool\""
Ich glaube nicht, dass der Server auf die von Google Cloud Spanner angegebene Datenbank zugreifen kann, aber ich erhalte keinen Fehler bei der Erstellung des Spanner-Clients. Wie kann dieser Fehler durch einen ungültigen Sitzungspool
behoben werden? invalid session pool
错误?
您在返回之前关闭 createClient
内部的客户端。删除 defer dataClient.Close()
createClient
, bevor Sie zurückkehren. Entfernen Sie defer dataClient.Close()
und es sollte wie erwartet funktionieren. 🎜
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 }
Das obige ist der detaillierte Inhalt vonGoogle Cloud Spanner-Fehler: Ungültiger Sitzungspool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!