1

シンプルな Postgres テーブル:

CREATE TABLE public.test (
  id INTEGER NOT NULL, 
  val BOOLEAN NOT NULL, 
  CONSTRAINT test_pkey PRIMARY KEY(id)
);

これを行います:

Yii::app()->db->createCommand()->insert('test', array(
        'id'=>1,
        'val'=>true,
    ));

すべてが大丈夫です:

Executing SQL: INSERT INTO "test" ("id", "val") VALUES (:id, :val). Bound with :id=1, :val=true

しかし、これを行う

Yii::app()->db->createCommand()->insert('test', array(
        'id'=>1,
        'val'=>false,
    ));

エラーが発生します:

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type boolean: ""
LINE 1: INSERT INTO "test" ("id", "val") VALUES ('1', '')
^. The SQL statement executed was: INSERT INTO "test" ("id", "val") VALUES (:id, :val). Bound with :id=1, :val=false

私が間違っている?

4

1 に答える 1

1

「db」コンポーネントで、emulatePrepareプロパティを false/null に設定します。true に設定すると、通常、このエラーが発生します。

Postgres は準備済みステートメントをサポートしているため、エミュレートする必要はありません。

于 2012-12-08T12:27:41.237 に答える