此查询有效:
SELECT r.ID FROM SomeTable r
但接下来给了我Token unknown - "ID"
错误:
SELECT r."ID" FROM SomeTable r
为什么这样,以及在Firebird中正确转义字段名称的方法是什么?
答案 0 :(得分:2)
您正在使用方言1数据库(或者您已使用方言1连接作为连接方言)。 Dialect 1不支持带引号的标识符,因此在Firebird存在之前已被弃用(在1999/2000年它仍然是Interbase 6 beta版)。
在方言1中,双引号用于字符串(char / varchar),因此解析器不会将"ID"
视为对象名称,而是作为字符串,因此它会抛出令牌未知错误,因为它需要一个对象名称。
如果这是一个新数据库,则使用方言3数据库重新启动。如果这是现有数据库,那么您真的应该考虑将其迁移到方言3中。请参阅Interbase 6入门手册中的“将数据库迁移到方言3”(可从http://www.firebirdsql.org/en/reference-manuals/获取,它位于页面的末尾)。
答案 1 :(得分:0)
我在firebird2.5上检查了这个问题并且它没有重复
它仅在旧的Firebird1.5
服务器上发现
因此,正确的解决方案是服务器升级到2.5,错误数量更少:)