0

問題

以前の移行が保留されていない状態で、次を実行します。

app/console doctrine:migration:diff
app/console doctrine:migration:migrate

このエラーが発生しました:

ALTER TABLE session ADD CONSTRAINT FK_9955C22EA76ED395 FOREIGN KEY (user_id) REFERENCES user(id)
Migration 20130320103822 failed during Execution. Error SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)

[PDOException]                                                                                    
  SQLSTATE[HY000]: General error: 1005 Can't create table 'mydb.#sql-3e4_75e0' (errno: 150)  

余分な知識

  1. クラスの注釈を使用してエンティティを宣言しています。
  2. このコードは機能しています (ただし、これらの種類の例外の後に実行されないいくつかの操作を手動で実行する必要があります)。

知りたいこと

  1. そのバグの原因は何ですか?
  2. それを修正する方法はありますか?(たとえばDoctrineの更新またはいくつかのMySQLパラメータを介して)
4

1 に答える 1

0

@Ocramius と @Lighthart によって提案された、これは純粋な SQL の問題です。これは、一貫性のない SQL を生成するバグのある Doctrine エンティティ宣言から来ました。

質問に記載されているエラーは、列レベルでの不一致に関連していました。キーは int(11) で、外部キーは varchar(255) でした。

于 2013-03-27T09:25:35.437 に答える