我在C#控制台应用程序中使用带有服务帐户授权的Google BigQuery API。
当我尝试加载CSV作业时,它会抛出“值不能为空。 参数名称:baseUri “异常。它仅针对单个表,当我更改表名时,它都可以正常工作。
这是堆栈跟踪:
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at Google.Apis.Upload.ResumableUpload`1.<UploadCoreAsync>d__e.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis\Apis\[Media]\Upload\ResumableUpload.cs:line 459
工作上传代码:
JobsResource.InsertMediaUpload InsertMediaUpload = new obsResource.InsertMediaUpload(BigQueryService, Job, Job.JobReference.ProjectId, fileStream, "application/octet-stream");
var JobInfo = InsertMediaUpload.UploadAsync();
感谢。
答案 0 :(得分:1)
我设法找到问题的根本原因和解决方案。
实际错误:表架构不匹配。
原因:在大查询表中,字段模式是必需的。我从此查询的响应“选择*从表名限制1 ”获取表模式,因为无法构建新模式。当我从查询响应中获取表模式时,字段模式更改为NULLABLE。这就是我得到Schema Mismatch的原因。
Google Developers的问题:
开发人员建议:
使用Fiddler工具获取实际错误。在我的情况下,我从检查员标签下的 Textview 中收到实际错误。希望这篇文章也有帮助。
感谢。