4

updateSchema空のデータベースでも問題なく動作しますが、2 回目に次の MySQL エラーが発生します。

SQLSTATE[HY000]: General error: 1025 Error on rename of
    './mydatabase/#sql-7f5_2b' to
    './mydatabase/mytable' (errno: 150)

クイック検索によると、このエラーは外部制約違反で発生します。正しいアプローチはALTER、テーブルを ing するときにドクトリンが外部キー チェックを無効にすることです。

これについて何かできることはありますか (Dcotrine にパッチを当てる以外に)?

さらに私は指定しています:

'engine' => 'myisam',

... に含まれてconnectionOptionsいますが、無視されます。


編集:

エラーへの参照を含む他のテーブルから外部キーを削除してmytableも、エラーは発生しません (FK によって参照されているが では参照されていない次のテーブルで発生しますmytable)。

4

1 に答える 1

3

残念ながら、Doctrine はこの状況を完全に正しく処理していません。

自分で制約を無効にして、Doctrine に再作成させる必要があります。制約を無効にするには、MySQL に接続して次のように入力します。

SHOW CREATE TABLE mytable;

テーブルの作成に必要な SQL が提供され、そこに制約作成ディレクティブが表示されます。制約が「mytable_fk」と呼ばれていると仮定すると、次のコマンドを発行する必要があります。

    ALTER TABLE mytable 
DROP CONSTRAINT mytable_fk;

次に updateSchema を実行すると、Doctrine は不足している制限を検出し、必要に応じて再作成します。

于 2013-02-10T09:31:33.010 に答える