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

4

Я надеюсь, что у улей есть еще несколько предложений по устранению этой ошибки из 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';
    }
Yiicaches метаданные дБ, возможно, в этом проблема? Попробуйте очистить кеш метаданных или вообще отключить кеш. galymzhan
@galymzhan Спасибо за предложение.echo Yii::app()->db->connectionString; показывает только то, что установлено в нашем файле конфигурации, и проверка установки tablePrefix возвращает ноль. У нас не настроены префиксы таблиц, поэтому это должно работать. Travis
Может быть, какой-то другой файл конфигурации объединяется с основным, переопределяющим настройки базы данных? Вы можете проверить фактическую конфигурацию БД, используемуюecho Yii::app()->db->connectionString; echo Yii::app()->db->tablePrefix; ... где-то в вашем контроллере. Кроме того, это не проблема с префиксами таблиц? galymzhan
Благодаря очистке кэша метаданных (hat tip @galymzhan) я обнаружил, что настоящая проблема заключалась в том, как мы загружали базу данных. Travis
Новые пользователи не могут отвечать на свои вопросы в течение 8 часов, поэтому: импорт данных был неправильным. Данные были импортированы в пользовательскую базу данных вместо правильного имени базы данных. В этом случае "postgres". Это была наша ошибка с самого начала. Чтобы было ясно, исправление в этом случае состоит в том, чтобы повторно импортировать данные в правильное местоположение или изменить конфигурацию Yii (наше решение). Blargh! Я провел часы на прошлой ночи. Новые настройки подключения:'db'=>array('connectionString' => 'pgsql:dbname=postgres', 'emulatePrepare' => true, 'username' => 'postgres','password' => '',) Travis

Ваш Ответ

3   ответа
1

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

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

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

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

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

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

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

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

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

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

я получил новую ошибку из-за этого

Похожие вопросы