在迁移中使用 postgreSQL 重命名列

Posted

技术标签:

【中文标题】在迁移中使用 postgreSQL 重命名列【英文标题】:Renaming column with postgreSQL in a migration 【发布时间】:2017-06-10 12:47:17 【问题描述】:

我尝试在迁移中重命名列:

\Schema::table('invitations', function (Blueprint $table) 
    $table->renameColumn('service_id', 'project_id');
);

运行这个会导致错误:

请求的未知数据库类型 jsonb,Doctrine\DBAL\Platforms\PostgreSQL92Platform 可能不支持。

我的表作为jsonb 列,我认为是问题所在,但我不知道为什么会出现此问题(因为service_id 不是jsonb 列)。

如何重命名我的专栏?(为什么它不适用于我写的内容?)

【问题讨论】:

确保将doctrine/dbal 添加到您的composer.json 文件并运行composer update @Afik​​Deri 包括在内。 事务中只写纯sql alter table 查询。 ALTER TABLE invitations RENAME COLUMN service_id TO project_id; 【参考方案1】:

我为 mysql 写了类似的迁移,恕我直言,与 Psql 没有区别。 renameColumn() 函数仅适用于 Doctrine\DBAL`,我不想将此依赖项添加到我们的项目中。所以我就这样做了

DB::transaction( function () 
    DB::raw('ALTER TABLE invitations RENAME COLUMN service_id TO project_id');
);

对不起我的英语。

【讨论】:

以上是关于在迁移中使用 postgreSQL 重命名列的主要内容,如果未能解决你的问题,请参考以下文章

sql 如果不存在,PostgreSQL重命名列

在 Pandas 中合并数据后重命名列

在 python 或 Pyspark 数据框中使用特殊字符重命名列

如何使用 Visual Studio 数据库项目重命名列?

熊猫重命名列

使用 `starts_with()` 重命名列,其中新前缀是字符串