Solo per fornire una risposta, poiché questo errore è piuttosto comune, ecco alcune cause:
1) Il :parameter il nome non corrisponde alla rilegatura per errore (errore di battitura?). Questo è quello che è successo qui. Ha :alias nell'istruzione SQL, ma vincolato a :username . Quindi, quando è stato tentato il collegamento del parametro, Yii/PDO non è riuscito a trovare :username nell'istruzione sql, il che significa che era "un parametro corto" e ha generato un errore.
2) Dimenticando completamente di aggiungere il bindValue() per un parametro. Questo è più facile da fare in Yii altri costrutti come $critera , dove hai un array o parametri ($criteria->params = array(':bind1'=>'test', ':bind2'=>'test) ).
3) Strani conflitti con l'impaginazione e/o l'ordinamento di CDataProvider quando si utilizza together e joins . Non esiste un modo semplice e specifico per caratterizzarlo, ma quando si utilizzano query complesse in CDataProviders ho riscontrato strani problemi con l'eliminazione dei parametri e il verificarsi di questo errore.
Un modo molto utile per risolvere questi problemi in Yii è abilitare la registrazione dei parametri
nel tuo file di configurazione. Aggiungilo al tuo db array nel tuo file di configurazione:
'enableParamLogging'=>true,
E assicurati che CWebLogRoute il percorso è impostato nel tuo log sezione. Questo stamperà la query che ha restituito l'errore e tutti i parametri che stava tentando di associare. Super disponibile!