Ошибка при выполнении запросов

109 views
Skip to first unread message

yolf

unread,
Jul 1, 2010, 7:31:22 AM7/1/10
to Yii Framework
Не могу разобраться. Ошибка:
<<Таблица "{{modules}}", упомянутая в записи active record класса
"Module", не найдена в базе данных.>>

Модель Module находится в модуле Core. При использовании её в том же
модуле - всё работает. При вызове из другого, если выше не выполняются
запросы - тоже работает. Но в нижеприведенном коде мне необходимо
обратиться к этой модели после выполнения запроса.
Пробовал менять местами запросы - всё работает, а так - не хочет.
Нашел на форумах что могут помочь следующие строки:

$command->getPdoStatement()->closeCursor();
Yii::app()->db->pdoInstance-
>setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

..но толку от них тоже нет.

public function actionInstall() {

//TODO: check role

ob_start();
require Yii::getPathOfAlias('application.modules.'.$this-
>module->getId().'.data') . '/install.sql';
$sql = ob_get_contents();
@ob_clean();

$command = Yii::app()->db->createCommand($sql);
$command->query();
$command->getPdoStatement()->closeCursor();

Yii::app()->getModule('core');


//Ошибка появляется при этом запросе:
$model = Module::model()->find("name = :name", array(':name'=>
$this->module->getId()));
if($model) {
$model->installed = true;
$model->save();
}
}

yolf

unread,
Jul 1, 2010, 7:56:29 AM7/1/10
to Yii Framework
И в некоторых случаях бывает такая ошибка:
General error: 2014 Cannot execute queries while other unbuffered
queries are active. Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
Reply all
Reply to author
Forward
0 new messages