ключевой столбец в таблице — char (36) utf8_general_ci
// сохранить без проблем
$key_Ad= Yii::app()->db->createCommand('select UUID()')->queryScalar();
$modelAd->key=$key_Ad;
$modelAd->save()
// но проблема в поиске
$post=Ad::model()->find( "key = :key",array(':key'=>$key_Ad) );
———————-> Ошибка
CDbException
CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘key =’ 3f837af1-8a16-11e4-b111-00241d5e096e ‘LIMIT 1’ в строке 1. Выполнен оператор SQL: SELECT * FROM ad
t
WHERE ключ =: ключ LIMIT 1 (C: \ xampp \ htdocs \ framework \ db \ CDbCommand.php: 543)
Проблема в том, что вы использовали зарезервированное ключевое слово mySql «ключ» в качестве имени столбца. Вот что генерирует синтаксическую ошибку. Лучше всего, чтобы вы переименовали свой столбец в нечто иное, чем «ключ», например ‘key1’ или ‘key_ad’.
В mySql вы все еще можете выполнить запрос со столбцом с именем «key», экранируя его в операторе select с помощью «` », я не уверен, что вы можете сделать это в Yii, вам следует попробовать его.
Но лучшее решение — просто переименовать столбец и не использовать зарезервированные слова в качестве имен столбцов в будущем.
Других решений пока нет …