【问题标题】:Rename column name using laravel migration using doctrine/dbal gives error使用 laravel 迁移重命名列名使用学说/dbal 给出错误
【发布时间】:2015-07-06 14:33:13
【问题描述】:

我正在尝试重命名本地主机中的数据库列,以便以后可以在开发和生产中进行此操作

我正在使用 laravel 5 并安装了学说 dbal。

我的迁移代码:

    $table->renameColumn('puesto', 'aux');

在我运行php artisan migrate 之后,它告诉我

[Doctrine\DBAL\DBALException]                                                                         
Unknown database type json requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it. 

我试图重命名的列甚至不是json,虽然表中有json列,实际上只有一个叫做'alianzas'。 我的问题是,如何从迁移中重命名列,而不是在数据库中手动重命名。

【问题讨论】:

  • 当 Laravel 拥有自己的伟大 migrations 时,为什么要安装学说?
  • laravel 文档如果你要重命名列laravel.com/docs/5.0/schema#renaming-columns,会要求你安装学说
  • 我正在使用 laravel 5,当我通过 composer.json 查看是否包含依赖项时,它没有显示,所以我添加了它。无论哪种方式,我在安装学说之前尝试了相同的代码并且错误不同,它是 [Symfony\Component\Debug\Exception\FatalErrorException] Class 'Doctrine\DBAL\Driver\PDOPgSql\Driver' not found 所以我认为它毕竟是依赖项
  • 你为项目安装了 composer/dbal 吗?

标签: php laravel doctrine


【解决方案1】:

修改列

先决条件

在修改列之前,请务必将 doctrine/dbal 依赖项添加到您的 composer.json 文件中。 Doctrine DBAL 库用于确定列的当前状态并创建对列进行指定调整所需的 SQL 查询。

"require": {
    "doctrine/dbal": "^2.5"
},

composer require doctrine/dbal

更新列属性

change 方法允许您将现有列修改为新类型,或修改列的属性。例如,您可能希望增加字符串列的大小。要查看实际的更改方法,让我们将 name 列的大小从 25 增加到 50:

Schema::table('users', function ($table) {
    $table->string('name', 50)->change();
});

【讨论】:

    【解决方案2】:

    看起来laravel 只是建议安装。

    你可以安装它:

    composer require doctrine/dbal
    

    【讨论】:

      【解决方案3】:

      这个错误在 Laravel 5.1 中仍然会出现,即使安装了doctrine/dbal

      作为一种临时解决方法,您可以使用原始 SQL 编写迁移,如下所示:

      public function up(){
        DB::statement("ALTER TABLE table_name RENAME puesto TO aux");
      }
      

      【讨论】:

      • 这会在较新版本的 MySQL 中引发错误。将整数列从 a 重命名为 b 的正确语法是:ALTER TABLE t1 CHANGE a b INTEGER;
      • 如果您要更改的列位于不同的数据库中,而不是默认的,该怎么办?
      • 您应该能够指定与DB::connection('other-database')->statement(…); 一起使用的连接。自从我写这个答案以来已经有一段时间了,似乎有更好的方法来做到这一点。
      猜你喜欢
      • 1970-01-01
      • 2018-12-10
      • 2015-07-28
      • 2014-12-18
      • 1970-01-01
      • 2020-06-22
      • 2018-07-18
      • 1970-01-01
      • 2018-09-19
      相关资源
      最近更新 更多