我想将MySQL数据库转换为PostgreSQL。
在MySQL中,ENUM数据类型默认允许空字段,这似乎不适用于PostgreSQL。因此,我不能用PostgreSQL从VARCHAR转换到ENUM,因为我的数据库中有很多PgSQL不允许的空字段。
我能做什么?允许NULL并将空字段设置为NULL?在创建类型时,在PostgreSQL的ENUM中添加一个空值(类似于ENUM('A','B','C',''))?停止使用这种丑陋和不协调的ENUM数据类型(而不是对varchar使用约束,或者使用另一个表和外键)?
谢谢您:)
user1527491
发布于 2013-08-17 16:20:24
如果您实际上希望在枚举中有空字符串值,则在创建类型时,应该将它们添加到枚举中。将空字符串接受到不显式允许空字符串的枚举中的任何数据库都是错误的,如果应用程序依赖它,那么也是错误的:)
如果它的意思是“未知”,那么使用NULL也是一个不错的选择--从纯模型的角度来看,可能是更干净的。
这可以归结为一个经典的问题,即某些数据库和系统认为null和空字符串是相同的,而它们显然是不同的值。
https://stackoverflow.com/questions/18290763
复制相似问题