【问题标题】:Mysql empty ENUM to postgresql ENUMMysql 空 ENUM 到 postgresql ENUM
【发布时间】:2013-08-19 21:21:39
【问题描述】:

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

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

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

谢谢你:)

用户1527491

【问题讨论】:

    标签: mysql postgresql enums database-migration database


    【解决方案1】:

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

    如果这个想法意味着“未知”,那么使用 NULL 也是一个不错的选择——从纯模型的角度来看,可能更简洁。

    归结为一些数据库和系统认为 null 和空字符串是同一事物的经典问题,而它们显然是不同的值。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多