当前位置: 首页 > 知识库问答 >
问题:

运行时,Laravel迁移在“重命名列”上失败

戚鸿福
2023-03-14

我有大约30个迁移文件。

当它到达包含重命名列的迁移时:

Schema::table('table', function (Blueprint $table) {
 $table->renameColumn('old_field', 'new_field');
});

它只会在迁移时出错(比如说,第15个)。它可以正常运行所有其他迁移。如果我对此进行评论,那么它将按预期完成。

我运行php artisan migratephp artisan migrate:fresh

我得到以下错误:

 ErrorException  : The "name" column option is not supported, setting it is deprecated and will cause an error in Doctrine 3.0

  at /Volumes/Workspace/new-app-backend/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php:85
    81|                 @trigger_error(sprintf(
    82|                     'The "%s" column option is not supported,' .
    83|                     ' setting it is deprecated and will cause an error in Doctrine 3.0',
    84|                     $name
  > 85|                 ), E_USER_DEPRECATED);
    86| 
    87|                 continue;
    88|             }
    89|             $this->$method($value);

  Exception trace:

  1   trigger_error("The "name" column option is not supported, setting it is deprecated and will cause an error in Doctrine 3.0")
      /Volumes/Workspace/new-app-backend/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php:85

  2   Doctrine\DBAL\Schema\Column::setOptions()
      /Volumes/Workspace/new-app-backend/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php:67

PHP-v给了我这个:

PHP 7.3.14 (cli) (built: Jan 24 2020 03:04:31) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
    with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans
    with Zend OPcache v7.3.14, Copyright (c) 1999-2018, by Zend Technologies

MySQL-v给了我这个:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 323
Server version: 5.7.29 Homebrew

我使用的是“条令/dbal”:“~2.3”

此错误仅在本地计算机上运行迁移时发生。在我的docker-compose堆栈和Vagant框中按预期完成。所有版本都相同。为什么这只发生在我的mac上?

共有2个答案

耿敏达
2023-03-14

这似乎在v2中得到了解决。7[bug]不要跳过列选项#3089

2.7中断mysql 5.7#3091中重命名列

使用composer update doctor/dbal升级软件包版本。

徐皓君
2023-03-14

解决方法我在网上找到的

Schema::table('table', function (Blueprint $table) {
    \DB::statement("ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;");
});

我希望这有帮助。

参考文献

  1. 在迁移中重命名列失败
  2. 在MySQL中重命名列
 类似资料:
  • 我使用laravel 5.2版本和PHP 7.1。我试图从我的laravel项目中迁移文件,其中我有代码来检查列的存在,如下所示- 我知道代码非常好,在设置相同的代码时,这已经运行了好几次。但现在我在另一台机器上尝试,失败了,出现了一个错误- [ErrorException] 未定义的属性:stdClass::$column\u name 如果我从代码中删除hasColumn检查,我可以消除这个错

  • 问题内容: 我的应用崩溃了,因为我没有正确处理迁移。 我正在寻找一种解决方案来迁移表中1列的名称。 在我的项目中,我有一个名为“ content ”的房间表,其 双人间 属性为“ archivedCount ”。在该应用程序的最新版本中,仍将属性 archivedCount 属性重命名为 dismissCount ,仍为 Double 类型 。 原始内容模型 新内容模型 尝试的解决方案 阅读了Go

  • 我有以下错误。有人在理解为什么? PHP工匠迁移 创建_users_table.php

  • 我将Rails5与PostgreSQL一起部署,以便在Heroku中免费应用程序。这是我在中的配置:

  • mariadb 10.2中似乎有一个突破性的变化。7如果尝试重命名字段可为Null的datetime列,并且如果运行迁移,将出现错误: 创建迁移: 创建第二次迁移以重命名列: 有没有一个解决办法来让这个工作? 根据条令/dbal问题: 为了允许表达式作为默认值,并将其与文字区分开来,Mariadb现在在信息模式中引用默认值。列表。这一变化在(Oracle-)Mysql/MariaDB平台之间带来了

  • 问题内容: 我在夹层中使用Django1.7。我创建了简单的配置文件(根据Mezzanine文档),存储在单独的应用程序“配置文件”中: 创建迁移会返回: 当我运行“迁移配置文件”时: 问题是,当我尝试打开与mezzanine.accounts相关的任何页面(例如更新帐户)时,它崩溃并显示: 我做错了什么? 问题答案: 在MySQL数据库中,从表中删除行。 删除迁移文件夹中的所有迁移文件。 重试并