0

次のコード行を使用して、別の移行で以前に作成した既存の列の名前を正常に変更しました。

$table->renameColumn('custom_paper_note', 'custom_primary_paper_note');

ただし、実行するphp artisan migrate:refreshと次のエラーが発生します。

[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

列の名前を変更したため、migrate:refresh プロセス中に削除できなくなったため、これはすべて意味があります。しかし、このエラーを修正する方法がわかりませんか?

ご協力いただきありがとうございます。

4

2 に答える 2

1

既に名前変更操作を行ったようで、古い名前が見つかりません。

この移行行を実行する前に列の存在をチェックする if 条件を追加すると便利です。

于 2016-07-08T22:50:45.503 に答える
1

同じ移行ファイルのdown()関数で、名前変更の逆を宣言します。

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

このようにして、元に戻すと、下位互換性があるように、列の名前が適切な列名に変更されます。

于 2016-07-08T23:10:47.660 に答える