使用doctrine / dbal使用laravel迁移重命名列名称会导致错误

时间:2015-04-27 23:14:57

标签: php laravel doctrine

我试图重命名我的localhost中的数据库列,以便以后可以在开发和生产中进行此操作

我正在使用laravel 5并安装了doctrine 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'。 我的问题是,如何从迁移中重命名列,而不是在数据库中手动重命名。

3 个答案:

答案 0 :(得分:10)

看起来laravel仅建议安装。

您可以使用以下方式安装:

composer require doctrine/dbal

答案 1 :(得分:8)

修改列

先决条件

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

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

composer require doctrine/dbal

更新列属性

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

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

答案 2 :(得分:1)

即使安装了doctrine/dbal,Laravel 5.1中仍会出现此错误。

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

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