我已成功使用以下代码行重命名先前在不同迁移中创建的现有列:
$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过程中删除它。但是,我不明白如何修复此错误?
感谢您的帮助。
答案 0 :(得分:1)
看起来您已经进行了重命名操作,但找不到旧名称。
在执行此迁移行之前添加检查列存在的if条件可能很有用。
答案 1 :(得分:1)
在同一个迁移文件中,在down()
函数中,声明重命名的反转:
Schema::table('table', function($table){
$table->renameColumn('custom_primary_paper_note', 'custom_paper_note');
});
这样,当您将其重新标记时,它会将列重命名为相应的列名,以便它向后兼容。