4

ハイブマインドが、Yii フレームワークからのこのエラーの処理について、さらにいくつかの提案をしてくれることを願っています。セットアップに固有の正確なエラーは次のとおりです。

CDbExceptionアクティブなレコード クラス "Users" のテーブル "users" がデータベースに見つかりません。

私は SVN の Yii Framework 1.1.11-dev を使用していますが、これは問題を解決するための試みにすぎません。最新の安定バージョン 1.1.10 を実行していました。

私の開発環境で動作しているコードを使用して、ライブ サーバーにデプロイしようとしています。問題はほぼ確実にデータベース構成の違いだと思いますが、どこにあるのかわかりません。

私はすでにここで検索し、この問題が数回リストされていることを発見した Yii フォーラムを検索しました。私たちがすでに試した提案された修正には以下が含まれます

  • dsn からのホストとポートの削除
  • テーブル名のスキーマあり/なし (つまり、「users」および「public.users」)
  • GRANT ALL ON DATABASE [dbname] TO postgres
  • ここにあるコードを使用して、データベース内の各テーブルにすべてを付与します

環境は次のとおりです。

  • 開発 - OSX 10.7、PHP 5.3.10、PostgreSQL 9.0.3
  • 製品 - FC15、PHP 5.3.10、PostgreSQL 9.0.7

このエラーは、テーブル「users」が存在しないことを示していますが、存在することは明らかです。

~$ 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

protected/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';
    }
4

3 に答える 3

1

指定されたデータベースにデータがインポートされていないことが判明しました。代わりに、ユーザーのデータベースにインポートされました。この場合は「postgres」です。この場合の修正は、データを正しい場所に再インポートするか、Yii 構成を変更することです (私たちの決定)。新しい接続設定:

'db'=>array('connectionString' => 'pgsql:dbname=postgres', 'emulatePrepare' => true, 'username' => 'postgres','password' => '',)
于 2012-06-13T08:39:15.583 に答える
0

MySQLで同様のエラーに直面していました。私の場合、問題は、ユーザーに権限を付与する際にミスを犯したことでした。MySQL クライアントを実行すると、適切な「コマンド拒否メッセージ」が表示されましたが、Yii の観点からは、テーブルがまったく存在しないように見えました。

解決策は、権利を適切に付与することでした。

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

于 2012-11-09T23:26:34.770 に答える