Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从PostgreSQL以不同格式返回的布尔值_Php_Postgresql_Yii - Fatal编程技术网

Php 从PostgreSQL以不同格式返回的布尔值

Php 从PostgreSQL以不同格式返回的布尔值,php,postgresql,yii,Php,Postgresql,Yii,我们有两台服务器,两台服务器上的代码相同。其中一个查询表返回布尔真/假的t/f,另一个查询表返回0/1。你知道为什么会这样吗?可能是yii设置或服务器设置?先了解一些背景 许多RDBMS不支持bool类型,因此人们为此使用非常小的int字段。PostgreSQL支持具有三个值的bool类型:true、false、或null(或未知) 这两台服务器都是PostgreSQL,这一问题并非100%清楚。如果一个是PostgreSQL,而另一个不是,那么人们会期望出现这种行为,所以这是首先要注意的。然而

我们有两台服务器,两台服务器上的代码相同。其中一个查询表返回布尔真/假的t/f,另一个查询表返回0/1。你知道为什么会这样吗?可能是yii设置或服务器设置?

先了解一些背景

许多RDBMS不支持bool类型,因此人们为此使用非常小的int字段。PostgreSQL支持具有三个值的bool类型:
true
false
、或
null
(或未知)

这两台服务器都是PostgreSQL,这一问题并非100%清楚。如果一个是PostgreSQL,而另一个不是,那么人们会期望出现这种行为,所以这是首先要注意的。然而,即使两者都是PostgreSQL,对于db设计器来说,设计一组表来使用smallint或bits,然后再更改为bool也并非闻所未闻


如果两个系统都是PostgreSQL,那么在psql中导致这种情况的唯一原因就是不同的表设计。查看
\d tablename
,查看一个是否设置为使用bool,另一个是否设置为使用位或整数类型。

数据库值的显示(和格式化)由SQL客户端完成。因此,您应该检查正在使用的工具是否存在任何差异。您是否在两台服务器上都使用psql测试了您的查询?结果不同吗?是的。我已经测试过了。其中一个返回的数组包含“f”,其中为false,另一个返回的数组包含null,其中为false。对于true,第一台服务器上包含“t”,第二台服务器上包含1。这两台服务器都在运行PostgreSQL吗?还是运行MySQL或Oracle?