表中的更改列在postgres中具有枚举类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表中的更改列在postgres中具有枚举类型相关的知识,希望对你有一定的参考价值。

这是我的代码:

public function up()
{
    Schema::table('organization_user', function (Blueprint $table) {
        $table->renameColumn('company_id', 'organization_id');
    });
}

我想重命名表中的列。并且在此表中有一列是枚举类型。但错误:未知数据库类型company_roles请求,Doctrine DBAL Platforms PostgreSQL100Platform可能 不支持它。我用laravel 5.6

答案

此问题可能与Laravel文档中提到的内容有关“您无法重命名具有'枚举'类型的表中的列”。见:enter image description here

我担心这与Laravel使用的Doctrine / DBal的5年问题相同:[Bug] Schema builder - renameColumn fails on table with enum columns但其中一个解决方法也在同一个问题报告DB Query上。为了参考,我会把它放在这里:

DB::statement("ALTER TABLE table_name MODIFY COLUMN column_name ENUM('Here','is','choices')");

在这种情况下,您需要在迁移类文件的down()函数中提供正确的语句,以恢复表的状态。

以上是关于表中的更改列在postgres中具有枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用窗口函数枚举 Postgres 表中的分区组?

另一个表中的 SQL Server 列在视图中具有静态值

如果值不在 ENUM 中,则更改插入值

TypeORM 中的 Postgres 枚举

检查多个列在表值参数中具有多个值中的任何一个

更改 SQL 列的数据类型时更新 SSIS 包