Использование миграции 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, которое проверяет существование столбца перед выполнением этой строки миграции.