Использование миграции Laravel для переименования существующего столбца, а затем запуска php artisan migrate: успешно обновите

Я успешно переименовал существующий столбец, ранее созданный в другой миграции, с помощью следующей строки кода:

$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

это все имеет смысл для меня, потому что я переименовал столбец, и теперь он не может удалить его во время процесса миграции: обновления. Тем не менее, я не понимаю, как исправить эту ошибку?

Спасибо за вашу помощь.

2 ответа

Решение

В том же файле миграции, в down() Функция, объявляет обратное переименование:

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

Таким образом, когда вы вернете его обратно, он переименует столбец в соответствующее имя столбца, чтобы обеспечить его обратную совместимость.

Похоже, вы уже выполнили операцию переименования, и она не может найти старое имя.

Может быть полезно добавить условие if, которое проверяет существование столбца перед выполнением этой строки миграции.

Другие вопросы по тегам