Skip to content

"Invalid database id (default)" con Firestore Python (Admin SDK) #978

Description

@criserr77-cloud

Ambiente

  • Progetto Firebase: misterapp-500516
  • Database Firestore: ID (default), edizione Standard, modalità Firestore nativo
  • Località database: eur3 (Belgio e Paesi Bassi, multi-regione UE)
  • Piano di fatturazione: Blaze
  • Ambiente di esecuzione: Streamlit Community Cloud (Python 3.14.7)
  • Librerie: firebase-admin (provate sia l'ultima versione disponibile sia fissata a 6.5.0), google-cloud-firestore==2.29.0

Errore

Alla chiamata di firestore.client() (o equivalentemente google.cloud.firestore.Client()), in scrittura su Firestore:

400 Invalid database id (default)

L'errore compare sia usando firebase_admin.firestore.client() senza specificare database_id, sia specificandolo esplicitamente come "(default)".

Cosa abbiamo verificato ed escluso

  1. Nome del database: confermato dalla Google Cloud Console (pagina Database, colonna "ID database") che è letteralmente (default), non un nome personalizzato.
  2. Valori alternativi provati per l'ID: "-default-" (visto nell'URL della Console) → errore diverso: "404 The database -default- does not exist for project misterapp-500516" (nonostante il database sia visibilmente presente e contenga dati). Anche database="" (esplicitamente vuoto, alternativa documentata) → stesso errore "Invalid database id (default)".
  3. Client utilizzato: stesso errore identico sia con firebase_admin.firestore.client() sia bypassando firebase_admin e usando direttamente google.cloud.firestore.Client(credentials=..., project=...).
  4. Credenziali/chiave dell'account di servizio: testate 4 chiavi diverse generate in momenti diversi (tutte validate sintatticamente e crittograficamente, RSA 2048 bit, caricate correttamente con la libreria cryptography). Stesso errore identico con tutte.
  5. Permessi IAM: l'account di servizio ha i ruoli Firebase Admin SDK Administrator Service Agent, Firebase Realtime Database Admin, Service Account Token Creator; aggiunto anche esplicitamente Cloud Datastore User. Nessun cambiamento.
  6. Versione della libreria: stesso errore sia con la versione più recente disponibile via pip, sia fissando firebase-admin==6.5.0 (marzo 2024).
  7. Codice applicativo: stesso errore anche tornando a una versione del codice precedente, con la connessione a Firestore nella sua forma più semplice (nessuna configurazione avanzata).

Nota

In precedenza (stessa chiave, stesso progetto, stesso codice base) i salvataggi su Firestore hanno funzionato correttamente per un periodo (dati confermati visibili nella collection). L'errore attuale è comparso senza una modifica di codice chiaramente collegabile, il che fa sospettare un problema lato servizio o una regressione libreria/infrastruttura piuttosto che un errore di configurazione del progetto.

Cosa funziona regolarmente

  • Lettura/scrittura sullo stesso progetto tramite Google Sheets API (libreria gspread) — nessun problema di credenziali o rete generale.
  • L'app resta pienamente funzionante usando Google Sheets come unico datastore.

Activity

  1. yvonnep165 commented on Sep 18, 2026

    @yvonnep165
    Contributor

    Hi @criserr77-cloud ,

    Thank you for the detailed report.

    (Note: Our maintainer team does not speak Italian, so we would appreciate it if any follow-up questions and future discussions could be in English so we and the broader community can assist you effectively. Thank you for your understanding!)

    Root Cause

    This was caused by an upstream regression in google-api-core==2.35.0 (tracked in googleapis/google-cloud-python#18207). In that release, path templating began percent-encoding parenthesis characters, turning the default database ID (default) into %28default%29, which the Firestore backend rejected with 400 Invalid database id.

    Current Status

    The upstream team has already resolved this:

    • google-api-core 2.35.0 has been yanked from PyPI.
    • The fix was released in google-api-core >= 2.36.0 (via PR #18218).

    How to Fix in Streamlit Community Cloud

    You are likely still encountering this because Streamlit Community Cloud caches installed packages across restarts. To resolve this:

    1. Force Streamlit to rebuild the environment:
      In Streamlit Community Cloud, open your app settings (the ⋮ menu next to your app) and select "Clear cache and reboot".

    2. (Alternative / Explicit):
      Add google-api-core >= 2.36.0 directly to your requirements.txt to guarantee that pip installs the patched version:

      google-api-core>=2.36.0
      
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions