Mysql清空ENUM到postgresql ENUM

我想将MySQL数据库转换为PostgreSQL .

在MySQL中,ENUM数据类型默认允许空字段,这似乎不适用于PostgreSQL . 因此,我无法使用PostgreSQL从VARCHAR转换为ENUM,因为我的数据库中有许多PgSQL不允许的空字段 .

我该怎么办?允许NULL并将空字段设置为NULL?在创建类型时,在PostgreSQL的ENUM中添加一个空值(类似于ENUM('A','B','C',''))?停止使用这种丑陋且不协调的ENUM数据类型(并使用varchar上的约束或其他表和外键)?

谢谢 :)

user1527491

回答(1)

3 years ago

如果你真的想在枚举中有空字符串值,你应该在创建类型时将它们添加到枚举中,是的 . 任何接受空字符串到一个没有明确允许空字符串的枚举的数据库都是错误的,如果你的应用程序依赖于它,那也是错误的:)

如果它的意思是它意味着“未知”,那么使用NULL也是一个不错的选择 - 从纯粹的模型角度来看,可能更清晰 .

它归结为一个典型的问题,即一些数据库和系统认为是null,而空字符串是相同的东西,当它们是明显不同的值时 .