私は、yii の Web アプリケーションにアクセスする際にスタックしました。オーナー様の設定通りに設定したのですが、アクセスしようとすると「列は文字列か配列でなければなりません」というエラーが出てしまいました。どうすれば解決できますか?前もって感謝します..
5 に答える
エラーメッセージを報告するときは、正確なエラーメッセージを表示すると便利です。実際のエラーメッセージは次のとおりです。「列名は文字列または配列のいずれかである必要があります」。正確な文字列を使用すると、フレームワークファイルを検索して、言及されている場所を見つけることができます。
どこかのcreateInCondition
メソッドがCDbCommandBuilderのメソッドに無効な列名を渡しているようです。
722行目を参照してください:https ://github.com/yiisoft/yii/blob/1.1.13/framework/db/schema/CDbCommandBuilder.php
そのメソッドが呼び出されるいくつかのインスタンスを見ると、どこかに主キーのないデータベーステーブルがあると思います。これが問題の考えられる説明の1つです。他の説明では、あなたの側でより多くの詳細が必要になります。
テーブルスキーマとともに、デバッグモードのときにエラーページが提供するスタックトレースを提供します。
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()
このリンクを見てください
テーブルに がないprimary key
か、主キーが十分に復元されていないようです。これは通常、バックアップ ファイルの破損が原因です。