両方に同じコードを持つ2つのサーバーがあります。そのうちの 1 つで、テーブルの問い合わせはブール値の true/false に対して t/f を返し、もう 1 つは 0/1 を返します。なぜこれが起こるのか分かりますか?たぶん、yii の設定かサーバーの設定でしょうか。
1 に答える
0
最初にいくつかの背景。
多くの RDBMS は bool 型をサポートしていないため、この目的のために非常に小さな int フィールドを使用します。true
PostgreSQL は、 、false
、またはnull
(または不明)の 3 つの値を持つ bool 型をサポートしています 。
両方のサーバーが PostgreSQL であるという質問からは、100% 明らかではありません。1 つが PostgreSQL で 1 つがそうでない場合、この種の動作が予想されるため、最初に注意する必要があります。ただし、両方が PostgreSQL であっても、db 設計者が 1 セットのテーブルを smallint またはビットを使用するように設計し、後で bool に変更することは前代未聞ではありません。
両方のシステムが PostgreSQL の場合、psql でこれを引き起こす可能性がある唯一のことは、異なるテーブル デザインです。bool を使用するよう\d tablename
に設定されているものと、ビット型または整数型を使用するように設定されているものがあるかどうかを確認してください。
于 2013-04-30T01:49:00.540 に答える