php - 使用 Laravel 迁移重命名现有列,然后运行 ​​php artisan migrate :refresh successfully

标签 php mysql laravel laravel-migrations

我已使用以下代码行成功重命名了先前在不同迁移中创建的现有列:

$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

这对我来说很有意义,因为我重命名了该列,现在它无法在迁移:刷新过程中删除它。但是,我不明白如何修复这个错误?

感谢您的帮助。

最佳答案

在同一个迁移文件中,在 down() 函数中,声明重命名的逆操作:

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

这样,当您将其恢复时,它会将列重命名为适当的列名称,以便向后兼容。

关于php - 使用 Laravel 迁移重命名现有列,然后运行 ​​php artisan migrate :refresh successfully,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38276388/

相关文章:

php - 使用PHP从XML youtube视频获取视频ID

mysql - 条件唯一性约束 Ruby on Rails

Laravel ->when() 大于或小于

php - 为什么我所做的循环只产生一个值?

mysql - 如何修复此服务器版本最新版本安装在此位置无效的 WITH 语句

laravel 5.4 更改认证用户表名

php - 启用 PhpMyAdmin 的额外功能

php - 如何使用php将 "pseudo"二进制文件写入文件?

javascript - form.submit() 发布复选框数据与标准提交按钮不同吗?

mysql - 在MYSQL中如何获取每一行的最大计数?