更新Phonograph行触发ReadOnlyTables错误,请求排查解决
Phonograph更新触发Phonograph2:ReadOnlyTables错误的排查与解决
问题场景
尝试更新Phonograph中的行时触发如下错误:
q_update_phonograph threw the following error: { "errorCode": "INVALID_ARGUMENT", "errorName": "Phonograph2:ReadOnlyTables", "errorInstanceId": "instanceId", "parameters": { "tableRids": "[phonograph rid]", "dataInputLocatorRids": "[foundry dataset rid]" } }
提交给Table Storage Service Post Event的参数如下:
{ "extractors": { "result": "$" }, "headers": {}, "method": "POST", "path": "storage/edits/tables/{tableRid}/events", "pathParams": { "tableRid": "phonograph rid" }, "queryParams": {}, "bodyJson": { "primaryKey": { "uniq_field": "uniq_fieldValue" }, "payload": { "type": "rowModified", "rowModified": { "columns": { "Comments": "Test Data" } } } } }
错误原因
Phonograph2:ReadOnlyTables错误直接说明目标Phonograph表处于只读状态,常见触发原因包括:
- 该表是从Foundry数据集同步生成的(对应错误参数里的
dataInputLocatorRids),这类同步表默认继承源数据集的只读属性,无法直接通过API修改。 - 当前操作账号仅拥有该表的只读权限,没有写入/修改权限。
- 表被设置为静态快照模式,禁止实时编辑。
解决步骤
开启表的可编辑模式
如果表是同步Foundry数据集生成的,进入Phonograph表详情页,点击右上角设置,找到编辑权限相关配置,勾选允许手动或API编辑。开启后可能需要重新同步源数据集以应用配置。检查账号权限
确认执行API请求的账号拥有该表的WRITE或EDIT权限。通过Foundry权限管理页面查看账号的表权限配置,权限不足时联系管理员添加对应权限。切换表的存储模式
检查表是否为静态快照模式,如果是,在表设置中把存储模式修改为动态可编辑模式。验证源数据集状态
如果依赖的Foundry数据集本身是只读的(比如由上游流水线生成且未开放写入),即使Phonograph表开启编辑也无法修改。这种情况要么确认源数据集是否允许写入,要么直接创建一个独立的可编辑Phonograph表,而非同步只读的源数据集。
内容的提问来源于stack exchange,提问作者Asher
相关产品推荐
相关产品推荐

