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 回答