2016-07-08 2 views
0

は私が成功し、以前に次のコード行と異なるの移行で作成された既存の列の名前を変更しました

[Illuminate\Database\QueryException] 
    SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'custom_paper_note'; check that column/key exists (SQL: alter table `line_items` drop `custom_paper_note`) 

[PDOException] 
    SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'custom_paper_note'; check that column/key exists 
:私は php artisan migrate:refreshを実行すると、私は次のエラーを取得します

私は列の名前を変更したのでマイグレーションが間違っているので、マイグレーション:リフレッシュ処理中にドロップすることはできません。しかし、私はこのエラーを修正する方法を理解していないのですか?

ありがとうございました。

+0

ここでは、両方の移行を上および下の機能で表示できますか? –

+0

'renameColumn'を作成する必要がある新しい移行に' drop'メソッドがないことを確認してください。私の推測はあなたです。 –

+0

あなたの 'composer.json'に' doctrine/dbal'を追加しましたか? – Scopey

答えて

1

、名前変更の逆数を宣言しますように、あなたが戻ってダウンし、それを持って来る

Schema::table('table', function($table){ 
    $table->renameColumn('custom_primary_paper_note', 'custom_paper_note'); 
}); 

この方法では、適切な列名に列の名前を変更します下位互換性があります。

+0

ありがとうございました!あなたは天才です:) – user3089840

1

名前変更操作を既に行っていて、古い名前が見つからないようです。

この移行行を実行する前に列の存在をチェックするif条件を追加すると便利です。 down()機能で同じ移行ファイルで

+0

お返事ありがとうございます。残念ながら、この状況で以前の移行ファイルを変更する必要があるため、dropIfExists()メソッドを使用することはできません。以前の移行を変更できたのは良い考えでした。 – user3089840

関連する問題