3

Cakephp 2.x アプリケーションを作成しています。開発の途中で、突然「テーブルが見つかりません」というエラーが発生しました。

Missing Database Table

Error: Table blocked for model Parental was not found in datasource default.

Notice: If you want to customize this error message, create project\View\Errors\missing_table

データベースを確認したところ、関連付けられたテーブルが実際にそこにありました。

次に、モデルのデバッグを試みます。モデルはテーブルにアクセスできます。Cakephp がデータテーブルを見つけられないというエラーが持続します。

モデルをデバッグすると、次のようになります。

\project\Controller\ParentalsController.php (line 5) 
object(Parental) {
    useTable => 'blocked'
    useDbConfig => 'default'
    id => null
    data => array()
    schemaName => null
    table => 'blocked'
    primaryKey => 'id'
    validate => array()
    validationErrors => array()
    validationDomain => null
    name => 'Parental'
    alias => 'Parental'
    tableToModel => array(
        'blocked' => 'Parental'
    )
    cacheQueries => false
    belongsTo => array()
    hasOne => array()
    hasMany => array()
    hasAndBelongsToMany => array()
    actsAs => null
    Behaviors => object(BehaviorCollection) {
        modelName => 'Parental'
        defaultPriority => (int) 10
    }
    whitelist => array()
    cacheSources => true
    findQueryType => null
    recursive => (int) 1
    order => null
    virtualFields => array()
    __backAssociation => array()
    __backInnerAssociation => array()
    __backOriginalAssociation => array()
    __backContainableAssociation => array()
    findMethods => array(
        'all' => true,
        'first' => true,
        'count' => true,
        'neighbors' => true,
        'list' => true,
        'threaded' => true
    )
}

モデルが使用する代わりに、次の新しいテーブルの作成も試しました。モデルは新しいテーブルにアクセスできますが、CakePHP はまだこれらの新しいテーブルを検出できません。

お知らせ下さい。

4

2 に答える 2

14

ググっていたらこんな質問を見つけました。

同様の問題がありました。

明らかにそこにあるのに特定のテーブルを持っていないというプロンプトが表示され続け、テーブルに複数形の名前を付ける際の規則に従っていました。

ケーキのキャッシュファイルを数回クリアしても無駄でした。

次に、デバッグ モードを 0 から 2 に変更しました。突然、エラーはなくなりました。

次に、デバッグ モードを 2 から 0 に戻しました。エラーはまだ消えていました。

これは奇妙な動作です。そして、それを複製する方法が正確にはわかりません。他の誰かが私と同じ問題に直面した場合に備えて、これを書き留めています。

更新: この問題が頻繁に発生するアプリの 1 つで、何らかの形で jenkins タスクにより、tmp/cache/persistent の一部のファイルが間違ったユーザー: グループにファイルを持つようになることに気付きました。

昨日、これを修正しました。現在のところ、この問題はまだ発生していません。さらに 10 日ほど経っても問題が発生しない場合は、tmp ファイルが適切な権限または user:group の所有権にないことが問題の原因であると断言します。

于 2013-07-01T03:38:08.063 に答える
0

この同様の問題を抱えている人のために:

私もケーキの慣習を尊重しましたが、それでもそのテーブルを見つけることができませんでした。「debug 2/0」でこの方法を試しましたが、成功しませんでした。

「魔法」は、作成した別のモデルをロードしたときに発生しました。最初にそのモデルのみをロードし、次に両方をロードしました。この方法は私にとってはうまくいきました。

于 2013-11-20T07:40:49.503 に答える