-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[Dataconnect] Cannot setup Postgres SQL permissions of Cloud SQL database #9314
Copy link
Copy link
Closed
Labels
Description
[REQUIRED] Environment info
firebase-tools: 14.19.1
Platform: Windows
[REQUIRED] Test case
./firebase.json
{
"dataconnect": {
"source": "dataconnect"
}
}./dataconnect/dataconnect.yaml
specVersion: "v1"
serviceId: "my-service"
location: "australia-southeast1"
schema:
source: "./schema"
datasource:
postgresql:
database: "my-database"
cloudSql:
instanceId: "my-instance"
connectorDirs: ["./connector"]./dataconnect/connector/connector.yaml
connectorId: my-service
generate:
javascriptSdk:
- outputDir: ../../src/dataconnect-generated
package: "@dataconnect/generated"
packageJsonDir: ../..
react: true
angular: false[REQUIRED] Steps to reproduce
- Initial deploy using
firebase deploy - Wait for database to be created
- Redeploy
[REQUIRED] Expected behavior
The new schema and connector are deployed
[REQUIRED] Actual behavior
Throws error
Error: Cannot setup Postgres SQL permissions of Cloud SQL database my-instance:my-database
Error: Connection terminated due to connection timeout[2025-10-14T09:28:51.547Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2025-10-14T09:28:51.548Z] > authorizing via signed-in user (me@example.com)
[2025-10-14T09:28:51.548Z] [iam] checking project my-project-id for permissions ["cloudsql.instances.connect","firebase.projects.get","firebasedataconnect.schemas.list","firebasedataconnect.schemas.update","firebasedataconnect.services.list"]
[2025-10-14T09:28:51.549Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:51.549Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:51.550Z] >>> [apiv2][query] POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id:testIamPermissions [none]
[2025-10-14T09:28:51.550Z] >>> [apiv2][(partial)header] POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id:testIamPermissions x-goog-quota-user=projects/my-project-id
[2025-10-14T09:28:51.550Z] >>> [apiv2][body] POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id:testIamPermissions {"permissions":["cloudsql.instances.connect","firebase.projects.get","firebasedataconnect.schemas.list","firebasedataconnect.schemas.update","firebasedataconnect.services.list"]}
[2025-10-14T09:28:51.961Z] <<< [apiv2][status] POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id:testIamPermissions 200
[2025-10-14T09:28:51.961Z] <<< [apiv2][body] POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id:testIamPermissions {"permissions":["cloudsql.instances.connect","firebase.projects.get","firebasedataconnect.schemas.list","firebasedataconnect.schemas.update","firebasedataconnect.services.list"]}
[2025-10-14T09:28:51.961Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2025-10-14T09:28:51.961Z] > authorizing via signed-in user (me@example.com)
i dataconnect: ensuring required API firebasedataconnect.googleapis.com is enabled...
i dataconnect: ensuring required API sqladmin.googleapis.com is enabled...
[2025-10-14T09:28:51.981Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:51.981Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:51.981Z] >>> [apiv2][query] GET https://firebasedataconnect.googleapis.com/v1/projects/my-project-id/locations/australia-southeast1/services/my-service/schemas/main [none]
[2025-10-14T09:28:52.421Z] <<< [apiv2][status] GET https://firebasedataconnect.googleapis.com/v1/projects/my-project-id/locations/australia-southeast1/services/my-service/schemas/main 200
[2025-10-14T09:28:52.421Z] <<< [apiv2][body] GET https://firebasedataconnect.googleapis.com/v1/projects/my-project-id/locations/australia-southeast1/services/my-service/schemas/main {"name":"projects/my-project-id/locations/australia-southeast1/services/my-service/schemas/main","createTime":"2025-10-14T09:06:38.842052996Z","updateTime":"2025-10-14T09:17:34.424851998Z","source":{"files":[{"path":"schema.gql","content":"type User @table {\n id: UUID! @default(expr: \"uuidV4()\")\n username: String!\n email: String!\n createdAt: Timestamp! @default(expr: \"request.time\")\n updatedAt: Timestamp! @default(expr: \"request.time\")\n authUid: String! @unique\n avatarUrl: String\n # Relationships\n # Reverse relationships are automatically generated by Data Connect\n}\n\ntype Group @table {\n id: UUID! @default(expr: \"uuidV4()\")\n name: String!\n description: String\n createdAt: Timestamp! @default(expr: \"request.time\")\n updatedAt: Timestamp! @default(expr: \"request.time\")\n creatorId: UUID!\n\n # Relationships\n creator: User! @ref(fields: [\"creatorId\"], references: [\"id\"])\n # Reverse relationships are automatically generated by Data Connect\n}\n\ntype Event @table {\n id: UUID! @default(expr: \"uuidV4()\")\n title: String!\n description: String\n startDate: Date!\n endDate: Date\n startTime: Timestamp\n endTime: Timestamp\n isAllDay: Boolean! @default(value: false)\n color: String\n createdAt: Timestamp! @default(expr: \"request.time\")\n updatedAt: Timestamp!\n\n # Relationships\n creatorId: UUID!\n creator: User! @ref(fields: [\"creatorId\"], references: [\"id\"])\n groupId: UUID\n group: Group @ref(fields: [\"groupId\"], references: [\"id\"])\n}\n\ntype List @table {\n id: UUID! @default(expr: \"uuidV4()\")\n title: String!\n description: String\n color: String\n createdAt: Timestamp! @default(expr: \"request.time\")\n updatedAt: Timestamp!\n\n # Relationships\n creatorId: UUID!\n creator: User! @ref(fields: [\"creatorId\"], references: [\"id\"])\n groupId: UUID\n group: Group @ref(fields: [\"groupId\"], references: [\"id\"])\n # Reverse relationships are automatically generated by Data Connect\n}\n\ntype Task @table {\n id: UUID! @default(expr: \"uuidV4()\")\n title: String!\n description: String\n completed: Boolean! @default(value: false)\n priority: Int @default(value: 0)\n dueDate: Date\n createdAt: Timestamp! @default(expr: \"request.time\")\n updatedAt: Timestamp!\n\n # Relationships\n creatorId: UUID!\n creator: User! @ref(fields: [\"creatorId\"], references: [\"id\"])\n listId: UUID!\n list: List! @ref(fields: [\"listId\"], references: [\"id\"])\n}\n\nenum GroupRole {\n OWNER\n ADMIN\n MEMBER\n CHILD\n PET\n}\n\ntype GroupMember @table(key: [\"groupId\", \"userId\"]) {\n groupId: UUID!\n userId: UUID!\n role: GroupRole! @default(value: MEMBER)\n joinedAt: Timestamp! @default(expr: \"request.time\")\n\n # Relationships\n group: Group! @ref(fields: [\"groupId\"], references: [\"id\"])\n user: User! @ref(fields: [\"userId\"], references: [\"id\"])\n}\n"}]},"uid":"d6b6aa2d-f49b-49d5-9ecb-28dc43d9d2d8","reconciling":false,"datasources":[{"postgresql":{"database":"my-database","cloudSql":{"instance":"projects/my-project-id/locations/australia-southeast1/instances/my-instance"},"schemaMigration":"MIGRATE_COMPATIBLE"}}],"etag":"KX-BFzTTR4LU9gALqK3qLLUXmzuaTt5wEkc_VWMkjZk"}
[2025-10-14T09:28:52.421Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2025-10-14T09:28:52.421Z] > authorizing via signed-in user (me@example.com)
[2025-10-14T09:28:52.422Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:52.422Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:52.422Z] >>> [apiv2][query] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users [none]
[2025-10-14T09:28:52.422Z] >>> [apiv2][body] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users {"name":"me@example.com","instance":"my-instance","project":"my-project-id","sqlserverUserDetails":{"disabled":false,"serverRoles":["cloudsqlsuperuser"]},"type":"CLOUD_IAM_USER"}
[2025-10-14T09:28:53.074Z] <<< [apiv2][status] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users 200
[2025-10-14T09:28:53.074Z] <<< [apiv2][body] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users {"kind":"sql#operation","targetLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance","status":"DONE","user":"me@example.com","insertTime":"2025-10-14T09:28:54.938Z","startTime":"2025-10-14T09:28:55.059Z","endTime":"2025-10-14T09:28:55.185Z","operationType":"CREATE_USER","name":"d796701a-b8ff-4677-aa7e-c3fc00000034","targetId":"my-instance","selfLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d796701a-b8ff-4677-aa7e-c3fc00000034","targetProject":"my-project-id"}
[2025-10-14T09:28:53.074Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.074Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.075Z] >>> [apiv2][query] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d796701a-b8ff-4677-aa7e-c3fc00000034 [none]
[2025-10-14T09:28:53.171Z] <<< [apiv2][status] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d796701a-b8ff-4677-aa7e-c3fc00000034 200
[2025-10-14T09:28:53.172Z] <<< [apiv2][body] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d796701a-b8ff-4677-aa7e-c3fc00000034 {"kind":"sql#operation","targetLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance","status":"DONE","user":"me@example.com","insertTime":"2025-10-14T09:28:54.938Z","startTime":"2025-10-14T09:28:55.059Z","endTime":"2025-10-14T09:28:55.185Z","operationType":"CREATE_USER","name":"d796701a-b8ff-4677-aa7e-c3fc00000034","targetId":"my-instance","selfLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d796701a-b8ff-4677-aa7e-c3fc00000034","targetProject":"my-project-id"}
[2025-10-14T09:28:53.173Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.173Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.173Z] >>> [apiv2][query] GET https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id [none]
[2025-10-14T09:28:53.411Z] <<< [apiv2][status] GET https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id 200
[2025-10-14T09:28:53.411Z] <<< [apiv2][body] GET https://cloudresourcemanager.googleapis.com/v1/projects/my-project-id {"projectNumber":"698202006599","projectId":"my-project-id","lifecycleState":"ACTIVE","name":"my-project-id","labels":{"firebase":"enabled","firebase-core":"disabled"},"createTime":"2025-08-30T06:43:24.553242Z","parent":{"type":"organization","id":"783254436661"}}
[2025-10-14T09:28:53.412Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.412Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.412Z] >>> [apiv2][query] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users [none]
[2025-10-14T09:28:53.412Z] >>> [apiv2][body] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users {"name":"service-698202006599@gcp-sa-firebasedataconnect.iam","instance":"my-instance","project":"my-project-id","sqlserverUserDetails":{"disabled":false,"serverRoles":["cloudsqlsuperuser"]},"type":"CLOUD_IAM_SERVICE_ACCOUNT"}
[2025-10-14T09:28:53.678Z] <<< [apiv2][status] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users 200
[2025-10-14T09:28:53.678Z] <<< [apiv2][body] POST https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users {"kind":"sql#operation","targetLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance","status":"DONE","user":"me@example.com","insertTime":"2025-10-14T09:28:55.639Z","startTime":"2025-10-14T09:28:55.662Z","endTime":"2025-10-14T09:28:55.787Z","operationType":"CREATE_USER","name":"d73a4858-dce2-4a2b-818e-72dd00000034","targetId":"my-instance","selfLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d73a4858-dce2-4a2b-818e-72dd00000034","targetProject":"my-project-id"}
[2025-10-14T09:28:53.679Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.679Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.679Z] >>> [apiv2][query] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d73a4858-dce2-4a2b-818e-72dd00000034 [none]
[2025-10-14T09:28:53.761Z] <<< [apiv2][status] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d73a4858-dce2-4a2b-818e-72dd00000034 200
[2025-10-14T09:28:53.761Z] <<< [apiv2][body] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d73a4858-dce2-4a2b-818e-72dd00000034 {"kind":"sql#operation","targetLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance","status":"DONE","user":"me@example.com","insertTime":"2025-10-14T09:28:55.639Z","startTime":"2025-10-14T09:28:55.662Z","endTime":"2025-10-14T09:28:55.787Z","operationType":"CREATE_USER","name":"d73a4858-dce2-4a2b-818e-72dd00000034","targetId":"my-instance","selfLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/operations/d73a4858-dce2-4a2b-818e-72dd00000034","targetProject":"my-project-id"}
[2025-10-14T09:28:53.762Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2025-10-14T09:28:53.762Z] > authorizing via signed-in user (me@example.com)
[2025-10-14T09:28:53.763Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.763Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.763Z] >>> [apiv2][query] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance [none]
[2025-10-14T09:28:53.851Z] <<< [apiv2][status] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance 200
[2025-10-14T09:28:53.851Z] <<< [apiv2][body] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance {"kind":"sql#instance","state":"RUNNABLE","databaseVersion":"POSTGRES_15","settings":{"authorizedGaeApplications":[],"tier":"db-f1-micro","kind":"sql#settings","userLabels":{"firebase-data-connect":"nt"},"availabilityType":"ZONAL","pricingPlan":"PER_USE","replicationType":"SYNCHRONOUS","activationPolicy":"ALWAYS","ipConfiguration":{"authorizedNetworks":[{"value":"my-ip-address","name":"pc","kind":"sql#aclEntry"}],"sslMode":"ALLOW_UNENCRYPTED_AND_ENCRYPTED","ipv4Enabled":true,"requireSsl":false,"enablePrivatePathForGoogleCloudServices":false,"serverCaMode":"GOOGLE_MANAGED_INTERNAL_CA"},"locationPreference":{"zone":"australia-southeast1-b","kind":"sql#locationPreference"},"databaseFlags":[{"name":"cloudsql.iam_authentication","value":"on"}],"dataDiskType":"PD_SSD","backupConfiguration":{"startTime":"10:00","kind":"sql#backupConfiguration","backupRetentionSettings":{"retentionUnit":"COUNT","retainedBackups":7},"enabled":false,"transactionLogRetentionDays":7,"transactionalLogStorageState":"TRANSACTIONAL_LOG_STORAGE_STATE_UNSPECIFIED","backupTier":"STANDARD"},"insightsConfig":{"queryInsightsEnabled":true,"queryStringLength":1024,"queryPlansPerMinute":5},"edition":"ENTERPRISE","connectorEnforcement":"NOT_REQUIRED","settingsVersion":"3","storageAutoResizeLimit":"0","storageAutoResize":false,"dataDiskSizeGb":"10","deletionProtectionEnabled":false,"replicationLagMaxSeconds":31536000,"enableGoogleMlIntegration":false},"etag":"c7cca4971aafe7deea90139dfd055224bbfc99c3e5fd070b10d729d0dec66a0b","ipAddresses":[{"type":"PRIMARY","ipAddress":"primary-ip"},{"type":"OUTGOING","ipAddress":"outgoing-ip"}],"serverCaCert":{"kind":"sql#sslCert","certSerialNumber":"0","cert":"---pub-key---","commonName":"C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=5ac647be-97d5-467f-9995-3827cc20e105","sha1Fingerprint":"47c1438a46fb6ac1acb44dcda1a27434c750348a","instance":"my-instance","createTime":"2025-10-14T09:06:34.779Z","expirationTime":"2035-10-12T09:07:34.779Z"},"instanceType":"CLOUD_SQL_INSTANCE","project":"my-project-id","serviceAccountEmailAddress":"p698202006599-l2n2ez@gcp-sa-cloud-sql.iam.gserviceaccount.com","backendType":"SECOND_GEN","selfLink":"https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance","connectionName":"my-project-id:australia-southeast1:my-instance","name":"my-instance","region":"australia-southeast1","gceZone":"australia-southeast1-b","databaseInstalledVersion":"POSTGRES_15_14","maintenanceVersion":"POSTGRES_15_14.R20250727.00_29","createTime":"2025-10-14T09:06:33.849Z","sqlNetworkArchitecture":"NEW_NETWORK_ARCHITECTURE","satisfiesPzi":false,"includeReplicasForMajorVersionUpgrade":false}
[2025-10-14T09:28:53.851Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.851Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:53.851Z] >>> [apiv2][query] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users/me@example.com [none]
[2025-10-14T09:28:53.994Z] <<< [apiv2][status] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users/me@example.com 200
[2025-10-14T09:28:53.994Z] <<< [apiv2][body] GET https://sqladmin.googleapis.com/v1/projects/my-project-id/instances/my-instance/users/me@example.com {"kind":"sql#user","etag":"7e7dc64fc6c0041832e2690db29c922db54926916afeed3a4e6718205ce138fb","name":"me@example.com","host":"","instance":"my-instance","project":"my-project-id","type":"CLOUD_IAM_USER","iamStatus":"IAM_STATUS_UNSPECIFIED"}
[2025-10-14T09:28:54.018Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.018Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.018Z] >>> [apiv2][query] GET https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance/connectSettings [none]
[2025-10-14T09:28:54.095Z] <<< [apiv2][status] GET https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance/connectSettings 200
[2025-10-14T09:28:54.096Z] <<< [apiv2][body] GET https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance/connectSettings {"kind":"sql#connectSettings","serverCaCert":{"kind":"sql#sslCert","certSerialNumber":"0","cert":"---pub-key---","commonName":"C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=5ac647be-97d5-467f-9995-3827cc20e105","sha1Fingerprint":"47c1438a46fb6ac1acb44dcda1a27434c750348a","instance":"my-instance","createTime":"2025-10-14T09:06:34.779Z","expirationTime":"2035-10-12T09:07:34.779Z"},"ipAddresses":[{"type":"PRIMARY","ipAddress":"primary-ip"},{"type":"OUTGOING","ipAddress":"outgoing-ip"}],"region":"australia-southeast1","databaseVersion":"POSTGRES_15","backendType":"SECOND_GEN","serverCaMode":"GOOGLE_MANAGED_INTERNAL_CA"}
[2025-10-14T09:28:54.096Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.096Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.097Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.097Z] Checked if tokens are valid: true, expires at: 1760437709331
[2025-10-14T09:28:54.097Z] >>> [apiv2][query] POST https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance:generateEphemeralCert [none]
[2025-10-14T09:28:54.097Z] >>> [apiv2][body] POST https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance:generateEphemeralCert {"public_key":"---pub-key---","access_token":"---access_token---"}
[2025-10-14T09:28:54.170Z] <<< [apiv2][status] POST https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance:generateEphemeralCert 200
[2025-10-14T09:28:54.170Z] <<< [apiv2][body] POST https://sqladmin.googleapis.com/sql/v1beta4/projects/my-project-id/instances/my-instance:generateEphemeralCert {"ephemeralCert":{"kind":"sql#sslCert","certSerialNumber":"","cert":"---pub-key---"}}
[2025-10-14T09:28:55.188Z] Error: Connection terminated due to connection timeout
at C:\Users\USER\AppData\Roaming\nvm\v24.10.0\node_modules\firebase-tools\node_modules\pg-pool\index.js:45:11
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async execute (C:\Users\USER\AppData\Roaming\nvm\v24.10.0\node_modules\firebase-tools\lib\gcp\cloudsql\connect.js:61:18)
at async executeSqlCmdsAsIamUser (C:\Users\USER\AppData\Roaming\nvm\v24.10.0\node_modules\firebase-tools\lib\gcp\cloudsql\connect.js:88:12)
at async getSchemaMetadata (C:\Users\USER\AppData\Roaming\nvm\v24.10.0\node_modules\firebase-tools\lib\gcp\cloudsql\permissionsSetup.js:135:31)
at async Command.actionFn (C:\Users\USER\AppData\Roaming\nvm\v24.10.0\node_modules\firebase-tools\lib\commands\dataconnect-sql-setup.js:36:24)
Error: An unexpected error has occurred.Reactions are currently unavailable