Yii Framework: таблица для класса активных записей не найдена в базе данных

Я надеюсь, что у улей есть еще несколько предложений по устранению этой ошибки из Yii Framework. Точная ошибка, характерная для нашей настройки:

CDbException The table "users" for active record class "Users" cannot be found in the database.

Я использую Yii Framework 1.1.11-dev из SVN, хотя это была всего лишь попытка решить проблему. Мы работали с последней стабильной версией 1.1.10.

Мы пытаемся развернуть на нашем работающем сервере код, который работает в моей среде разработки. Я чувствую, что проблема почти наверняка заключается в разнице конфигурации базы данных, но я не уверен, где ее найти.

Я уже искал здесь и искал форумы Yii, где я нашел эту проблему, перечисленную пару раз. Предлагаемые исправления, которые мы уже пробовали, включают

removing the host and port from the dsn with and without schema for the tablename (ie "users" and "public.users") GRANT ALL ON DATABASE [dbname] TO postgres Grant all on each table in the db using code found here

Среды являются следующими:

DEV - OSX 10.7, PHP 5.3.10, PostgreSQL 9.0.3 PROD - FC15, PHP 5.3.10, PostgreSQL 9.0.7

Ошибка указывает на таблицу «пользователи» не существует, хотя это вполне ясно,

~$ psql -U postgres
psql (9.0.7)
Type "help" for help.

postgres=# \dt
                    List of relations
 Schema |             Name             | Type  |  Owner   
--------+------------------------------+-------+----------
  { ... removed for brevity ... }
 public | users                        | table | postgres

Наша конфигурация в защищенном / config / main.php

'db'=>array(
    'connectionString' => 'pgsql:dbname=lppsync',
    'emulatePrepare' => true,
    'username' => 'postgres',
    'password' => '',
),

И соответствующая часть модели пользователей

class Users extends CActiveRecord
{
    /**
     * Returns the static model of the specified AR class.
     * @param string $className active record class name.
     * @return Users the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return 'users';
    }
 Travis25 мая 2012 г., 18:16
Благодаря очистке кэша метаданных (hat tip @galymzhan) я обнаружил, что настоящая проблема заключалась в том, как мы загружали базу данных.
 Travis25 мая 2012 г., 17:57
@galymzhan Спасибо за предложение.echo Yii::app()->db->connectionString; показывает только то, что установлено в нашем файле конфигурации, и проверка установки tablePrefix возвращает ноль. У нас не настроены префиксы таблиц, поэтому это должно работать.
 galymzhan25 мая 2012 г., 17:45
Может быть, какой-то другой файл конфигурации объединяется с основным, переопределяющим настройки базы данных? Вы можете проверить фактическую конфигурацию БД, используемуюecho Yii::app()->db->connectionString; echo Yii::app()->db->tablePrefix; ... где-то в вашем контроллере. Кроме того, это не проблема с префиксами таблиц?
 Travis25 мая 2012 г., 18:24
Новые пользователи не могут отвечать на свои вопросы в течение 8 часов, поэтому: импорт данных был неправильным. Данные были импортированы в пользовательскую базу данных вместо правильного имени базы данных. В этом случае "postgres". Это была наша ошибка с самого начала. Чтобы было ясно, исправление в этом случае состоит в том, чтобы повторно импортировать данные в правильное местоположение или изменить конфигурацию Yii (наше решение). Blargh! Я провел часы на прошлой ночи. Новые настройки подключения:'db'=>array('connectionString' => 'pgsql:dbname=postgres', 'emulatePrepare' => true, 'username' => 'postgres','password' => '',)
 galymzhan25 мая 2012 г., 18:10
Yiicaches метаданные дБ, возможно, в этом проблема? Попробуйте очистить кеш метаданных или вообще отключить кеш.

Ответы на вопрос(3)

Решение Вопроса

данные не были импортированы в именованную базу данных. Вместо этого он был импортирован в пользовательскую базу данных. В этом случае "postgres". Исправление в этом случае заключается в том, чтобы повторно импортировать данные в правильное местоположение или изменить конфигурацию Yii (наше решение). Новые настройки подключения:

'db'=>array('connectionString' => 'pgsql:dbname=postgres', 'emulatePrepare' => true, 'username' => 'postgres','password' => '',)

кэши метаданные дБ, возможно, в этом проблема? Попробуйте очистить кеш метаданных или вообще отключить кеш.

/wwwroot/assets Папка обычно содержит эти файлы кэша.

Проверьте также, что на вашем устройстве (диске) не осталось свободного места.

Источник: Цитирую один из комментариев к этому Вопросу - Framework: таблица для класса активных записей не найдена в базе данных

 17 дек. 2014 г., 03:42
Вы проверили, что на вашем устройстве (диске) не осталось свободного места?
 17 дек. 2014 г., 15:34
Да, точно. Я включил xdebug и у меня закончилось свободное место. Спасибо
 15 дек. 2014 г., 12:12
Я проверяю / wwwroot / assets и там нет кеша

алась в том, что я допустил ошибку при предоставлении прав пользователю. Запустив клиент MySQL, я получил правильную команду «сообщение об отказе», но с точки зрения Yii казалось, что таблиц вообще не существует.

Решение состояло в том, чтобы предоставить права должным образом:

grant all on yiiapp.* to 'yii'@'localhost' identified by 'yii';

 13 дек. 2014 г., 13:58
я получил новую ошибку из-за этого

Ваш ответ на вопрос