You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google.Apis.Firestore.v1创建默认Cloud Firestore数据库遇格式错误求助

解决Cloud Firestore数据库创建时的命名错误问题

使用Google.Apis.Firestore.v1库为Firebase项目创建Cloud Firestore数据库时,遇到数据库命名错误,提示database_id should be 4-63 characters, and valid characters are /[a-z][0-9]-/。相关代码和错误信息如下:

代码示例

using Google.Apis.Firestore.v1;

private static FirestoreService _firestoreService;
public static void IntializeFirestoreAdmin() {
   GoogleCredential credential = GoogleCredential.GetApplicationDefault();
   if (CloudManager.Credential.IsCreateScopedRequired)
   {
       credential = CloudManager.Credential.CreateScoped(FirestoreService.Scope.CloudPlatform);
   }
   _firestoreService = new FirestoreService(
        new BaseClientService.Initializer()
        {                 
           HttpClientInitializer = credential,
           ApplicationName = CloudManager.ApplicationName
        });          
}
public static void AddCloudFirestore() {
   IntializeFirestoreAdmin();
   var mydata = new GoogleFirestoreAdminV1Database {
            LocationId = "nam5",
            Type = "FIRESTORE_NATIVE",
            Name = "projects/" + CloudManager.ProjectId + "/databases/(default)",
            
        };
   _firestoreService.Projects.Databases.Create(mydata, "projects/" + CloudManager.ProjectId).Execute();
}

错误信息

Unhandled exception. The service firestore has thrown an exception.
HttpStatusCode is BadRequest.
Google.Apis.Requests.RequestError
database_id should be 4-63 characters, and valid characters are /[a-z][0-9]-/ [400]
Errors [
    Message[database_id should be 4-63 characters, and valid characters are /[a-z][0-9]-/] Location[ - ] Reason[badRequest] Domain[global]
]

Google.GoogleApiException: The service firestore has thrown an exception. HttpStatusCode is BadRequest. database_id should be 4-63 characters, and valid characters are /[a-z][0-9]-/
   at Google.Apis.Requests.ClientServiceRequest`1.ParseResponse(HttpResponseMessage response)
   at Google.Apis.Requests.ClientServiceRequest`1.Execute()

问题原因

你手动设置了Name字段为包含(default)的路径,导致API解析出的数据库ID为(default),但该ID包含括号(),不符合Cloud Firestore数据库ID的规则(仅允许小写字母、数字、连字符,长度4-63字符)。同时,Name字段是由服务器自动生成的资源完整路径,客户端无需手动指定。

解决方法

根据你的需求选择以下两种方式:

1. 创建自定义数据库

指定一个符合规则的数据库ID(小写字母、数字、连字符组合,长度4-63字符),设置DatabaseId字段而非Name字段:

public static void AddCloudFirestore() {
   IntializeFirestoreAdmin();
   var mydata = new GoogleFirestoreAdminV1Database {
            LocationId = "nam5",
            Type = "FIRESTORE_NATIVE",
            DatabaseId = "my-custom-db-01" // 替换为符合规则的自定义ID
        };
   _firestoreService.Projects.Databases.Create(mydata, "projects/" + CloudManager.ProjectId).Execute();
}

2. 创建默认数据库

如果你需要创建默认数据库(ID为(default)),无需设置Name或DatabaseId字段,API会自动处理:

public static void AddCloudFirestore() {
   IntializeFirestoreAdmin();
   var mydata = new GoogleFirestoreAdminV1Database {
            LocationId = "nam5",
            Type = "FIRESTORE_NATIVE"
            // 不设置Name和DatabaseId,自动创建默认数据库
        };
   _firestoreService.Projects.Databases.Create(mydata, "projects/" + CloudManager.ProjectId).Execute();
}

内容的提问来源于stack exchange,提问作者Samaritan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:20:26