これは意図された動作です。ソースを参照してください:https ://github.com/yiisoft/yii/blob/master/framework/db/schema/sqlite/CSqliteSchema.php#L242
public function addForeignKey($name, $table, $columns, $refTable, $refColumns, $delete=null, $update=null)
{
throw new CDbException(Yii::t('yii', 'Adding a foreign key constraint to an existing table is not supported by SQLite.'));
}
私はこれが異なるDBMS間で移植可能なコードを試みていると仮定しています(そうではなく、sqliteでのみ機能することを意図している場合は、そこに呼び出しを置かないでください:p)
この機能をオーバーライドしたい場合は、Sqlite Schemaクラスを拡張する必要があります。そうすると、問題が発生します。
Yii :: app()-> db-> driverNameに基づいて、外部キーの追加をオフに切り替える方がよい場合があります。== sqliteの場合は、外部キーを追加しないでください。
または、ハックドゥーガリーを実行してテーブルを保存し、外部キーを使用してテーブルを再作成し、すべてのデータを再度ロードします。