Mysql空枚举到postgresql枚举

Mysql空枚举到postgresql枚举,mysql,postgresql,enums,database-migration,database,Mysql,Postgresql,Enums,Database Migration,Database,我想将MySQL数据库转换为PostgreSQL 在MySQL中,枚举数据类型默认允许空字段,这似乎不适用于PostgreSQL。因此,我不能用PostgreSQL将VARCHAR强制转换为ENUM,因为我的数据库中有很多PgSQL不允许的空字段 我能做什么?是否允许NULL并将空字段设置为NULL?创建类型时在PostgreSQL的枚举中添加一个空值(类似于枚举('A','B','C',''))?停止使用这种丑陋且不一致的枚举数据类型(而是对varchar或其他表和外键使用约束) 谢谢:) u

我想将MySQL数据库转换为PostgreSQL

在MySQL中,枚举数据类型默认允许空字段,这似乎不适用于PostgreSQL。因此,我不能用PostgreSQL将VARCHAR强制转换为ENUM,因为我的数据库中有很多PgSQL不允许的空字段

我能做什么?是否允许NULL并将空字段设置为NULL?创建类型时在PostgreSQL的枚举中添加一个空值(类似于枚举('A','B','C',''))?停止使用这种丑陋且不一致的枚举数据类型(而是对varchar或其他表和外键使用约束)

谢谢:)


user1527491

如果确实希望在枚举中包含空字符串值,则应在创建类型时将其添加到枚举中,是。任何将空字符串接受到不显式允许空字符串的枚举中的数据库都是有缺陷的,如果应用程序依赖它,那也是有缺陷的:)

如果它的意思是“未知”,那么使用NULL也是一个不错的选择——从纯模型的角度来看,可能是更干净的选择


<> P>这是一些数据库和系统考虑空值和空字符串是同一事物的经典问题,当它们是明显不同的值时。

< P>如果您实际上想在枚举中有空字符串值,则在创建类型时应该将它们添加到枚举中,是的。任何将空字符串接受到不显式允许空字符串的枚举中的数据库都是有缺陷的,如果应用程序依赖它,那也是有缺陷的:)

如果它的意思是“未知”,那么使用NULL也是一个不错的选择——从纯模型的角度来看,可能是更干净的选择

<> P>这是一些数据库和系统考虑空值和空字符串是同一事物的经典问题,当它们是明显不同的值时,