EdgeDB中如何插入以保留字作为键的元组数据?
解决EdgeDB中保留字
refresh导致的语法错误 refresh是EdgeDB的保留关键字,直接将其用作字段名会触发语法错误,相关代码及报错信息如下:
报错代码
query.data = { expire: query.expire, minimum: query.minimum, mname: query.mname, refresh: query.refresh, retry: query.retry, rname: query.rname, serial: query.serial };
错误提示
EdgeQLSyntaxError: 意外的关键字'refresh' | 6 | data := ( expire := <std::float64>604800,minimum := <std::float64>86400,mname := "ns1.app.beachfront",refresh := <std::float64>3600,retry := <std::float64>1800,rname := "administrator.app.beachfront",serial := <std::float64>2023092801 ) | ^^^^^^^ 提示:使用其他标识符或用反引号将名称引起来:`refresh`
解决方案
按照错误提示,用**反引号()**包裹保留字refresh`,让EdgeDB将其识别为普通标识符即可。
修改后的代码:
query.data = { expire: query.expire, minimum: query.minimum, mname: query.mname, `refresh`: query.refresh, retry: query.retry, rname: query.rname, serial: query.serial };
对应的EdgeQL语句同步修改:
data := ( expire := <std::float64>604800, minimum := <std::float64>86400, mname := "ns1.app.beachfront", `refresh` := <std::float64>3600, retry := <std::float64>1800, rname := "administrator.app.beachfront", serial := <std::float64>2023092801 )
内容的提问来源于stack exchange,提问作者NetOperator Wibby
相关产品推荐
相关产品推荐

