使用laravel迁移重命名列名(使用doctrine/dbal)时出现错误

ulydmbyx  于 2022-12-14  发布在  其他
关注(0)|答案(4)|浏览(193)

我正在尝试重命名本地主机中的一个数据库列,以便以后在开发和生产中可以这样做。
我使用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”的列。我的问题是,我如何从迁移中重命名列,而不是在数据库中手动重命名。

xxls0lw8

xxls0lw81#

看起来laravel只建议安装。
您可以使用以下方式安装它:

composer require doctrine/dbal
ttp71kqs

ttp71kqs2#

修改列

先决条件
修改数据栏之前,请务必将doctrine/dbal相依性新增至您的***composer.json***档案。Doctrine DBAL程式库是用来判断数据栏的目前状态,并建立对数据栏进行指定调整所需的SQL查询。

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

composer require doctrine/dbal

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

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

mbyulnm03#

即使安装了doctrine/dbal,Laravel 5.1中仍会出现此错误。
作为一种临时解决方法,您可以使用原始SQL编写迁移,如下所示:

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

yruzcnhs4#

如果不想使用教条,可以使用DB语句,

public function up()
{
    DB::statement('ALTER TABLE table_name CHANGE puesto aux VARCHAR(200) ');
}

相关问题