我们有两台服务器在两者上都有相同的代码。在其中一个上,对表的查询返回布尔值为真/假的t / f,另一个返回0/1。你知道为什么会这样吗?可能是yii设置还是服务器设置?
答案 0 :(得分:0)
首先是一些背景。
许多RDBMS不支持bool类型,因此人们为此目的使用非常小的int字段。 PostgreSQL支持具有三个值的bool类型:true
,false
或null
(或未知)。
两个服务器都是PostgreSQL的问题并非100%明确。如果一个是PostgreSQL而另一个不是,那么人们会期望这种行为,所以这是首先要注意的事情。然而,即使两者都是PostgreSQL,数据库设计人员设计一组表来使用smallint或bits,然后更改为bool也不是闻所未闻。
如果两个系统都是PostgreSQL,那么在psql中唯一可能导致这种情况的是不同的表设计。看一下\d tablename
并查看是否设置了一个使用bool而另一个设置为使用位或整数类型。