2013-02-22 4 views
0

두 개의 서버가 모두 동일한 코드를 사용합니다. 그들 중 하나에서 테이블에 대한 심문은 부울 true/false에 대해 t/f를 반환하고 다른 것에는 0/1을 반환합니다. 왜 이런 일이 일어나는 지 아십니까? 아마 yii 설정이나 서버 설정일까요?부울 값이 PostgreSQL과 다른 형식으로 반환되었습니다.

+1

데이터베이스 값 표시 및 형식 지정은 SQL * 클라이언트 *에 의해 수행됩니다. 따라서 사용중인 도구의 차이점을 확인해야합니다. –

+0

양쪽 서버에서 psql로 쿼리를 테스트 해 보셨습니까? 결과가 다릅니 까? –

+0

예. 나는 시험을 보았다. 1 개 (살)에는 돌려 주어지는 배열에는 'f'가 포함되어 false는 false를, 한편에는 false를 포함한 null를 포함합니다. true의 경우 첫 번째 서버에는 't'가 포함되고 두 번째 서버에는 1이 포함됩니다. – makeron

답변

0

첫 번째 일부 배경.

많은 RDBMS는 bool 유형을 지원하지 않으므로 사람들은이 용도로 매우 작은 int 필드를 사용합니다. PostgreSQL는 true, false 또는 null (또는 알 수 없음)의 세 가지 값을 갖는 bool 유형을 지원합니다.

두 서버 모두 PostgreSQL이라는 질문에 100 % 명확하지 않습니다. 하나가 PostgreSQL이고 다른 하나가 PostgreSQL이라면, 이런 종류의 동작을 기대할 것이므로 이것이 주목할 첫 번째 것이다. 그러나 둘 다 PostgreSQL이라하더라도 db 디자이너가 smallints 또는 bits를 사용하는 한 세트의 테이블을 디자인 한 다음 나중에 bool로 변경하는 것은 전례가 없습니다.

두 시스템이 모두 PostgreSQL 인 경우 psql에서이 문제를 일으킬 수있는 유일한 방법은 다른 테이블 디자인입니다. \d tablename을보고 bool을 사용하도록 설정되어 있고 다른 설정이 비트 또는 정수 유형을 사용하도록 설정되어 있는지 확인하십시오.

관련 문제