6

私は、yii の Web アプリケーションにアクセスする際にスタックしました。オーナー様の設定通りに設定したのですが、アクセスしようとすると「列は文字列か配列でなければなりません」というエラーが出てしまいました。どうすれば解決できますか?前もって感謝します..

4

5 に答える 5

6

エラーメッセージを報告するときは、正確なエラーメッセージを表示すると便利です。実際のエラーメッセージは次のとおりです。「列は文字列または配列のいずれかである必要があります」。正確な文字列を使用すると、フレームワークファイルを検索して、言及されている場所を見つけることができます。

どこかのcreateInConditionメソッドがCDbCommandBuilderのメソッドに無効な列名を渡しているようです。

722行目を参照してください:https ://github.com/yiisoft/yii/blob/1.1.13/framework/db/schema/CDbCommandBuilder.php

そのメソッドが呼び出されるいくつかのインスタンスを見ると、どこかに主キーのないデータベーステーブルがあると思います。これが問題の考えられる説明の1つです。他の説明では、あなたの側でより多くの詳細が必要になります。

テーブルスキーマとともに、デバッグモードのときにエラーページが提供するスタックトレースを提供します。

于 2013-01-11T04:05:13.393 に答える
4

primary key多分あなたのテーブルにはありません。メソッド $model->save() を使用して保存するか、メソッド $model->update() ($model は CActiveRecord インスタンス) を使用すると、このエラーが発生します。

主キーを使用して CActiveRecord のメソッドを更新するため (詳細はこちらを参照 )

ソースコード: Framework/db/ar/CActiveRecord.php#1115

if($this->_pk===null)
        $this->_pk=$this->getPrimaryKey();
$this->updateByPk($this->getOldPrimaryKey(),$this->getAttributes($attributes));
$this->_pk=$this->getPrimaryKey();

またはupdateAll()の代わりにメソッドを使用できますupdate()updateByPk()

于 2014-04-11T07:47:01.840 に答える
2

このリンクを見てください

http://www.yiiframework.com/forum/index.php/topic/3887-cdbexception-column-name-must-be-either-a-string-or-an-array/

テーブルに がないprimary keyか、主キーが十分に復元されていないようです。これは通常、バックアップ ファイルの破損が原因です。

于 2013-04-28T13:57:06.547 に答える