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

Posted

技术标签:

【中文标题】表中的更改列在 postgres 中具有枚举类型【英文标题】:Change column in table have an enum type in postgres 【发布时间】:2019-02-20 22:59:25 【问题描述】:

这是我的代码:

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

【问题讨论】:

你能显示你创建表的迁移吗? ***.com/questions/26522292/… 这可能会对您有所帮助。 【参考方案1】:

此问题可能与 Laravel 文档中提到的“您无法重命名具有 'enum' 类型的表中的列”有关。见:

恐怕这就像 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 列在视图中具有静态值

Java 枚举、JPA 和 Postgres 枚举——如何让它们一起工作?

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

TypeORM 中的 Postgres 枚举

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