ERROR: Failed to find conversion function from unkNown to text********** Error **********ERROR: Failed to find conversion function from unkNown to textsql state: XX000
这很容易解决使用cast,但我不完全明白为什么会发生。我将解释我对两个简单陈述的混淆。
这一个是OK:
select 'text'union allselect 'text';
这将返回错误:
with t as (select 'text') select * from tunion allselect 'text'
我知道我可以很容易地解决:
with t as (select 'text'::text) select * from tunion allselect 'text'
为什么第二个示例中的转换失败?有一些逻辑,我不明白或这将是固定的Postgresql的未来版本?
Postgresql 9.1.9
同样的行为在Postgresql 9.2.4(SQL Fiddle)
Postgres很高兴,如果它可以从上下文检测类型的无类型常量。但是当任何上下文不可能时,并且当查询比平凡一点点复杂时,这个机制失败。这些规则特定于任何SELECT子句,有些是更严格的,有些不是。如果我可以说,那么较老的例程更容忍(由于与Oracle的更高兼容性和对初学者的负面影响较小),现代的更不容忍(由于类型错误的更高的安全性)。有一些建议尝试使用任何未知的字面常量,如文本常量,但被拒绝了更多的理由。所以我不期望这方面的重大变化。这个问题通常与合成测试相关 – 更少与实际查询相关,其中类型是从列类型中推导出来的。
总结以上是内存溢出为你收集整理的postgresql – 无法找到从未知到文本的转换函数全部内容,希望文章能够帮你解决postgresql – 无法找到从未知到文本的转换函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)