Varchar到eNum

Mon*_*Ove 9 mysql

我想将mysql中的一列从varchar转换为enum.如果我的新枚举值包含现有值,我会丢失该列中的现有值吗?

Fre*_*son 16

对于像我这样的复制粘贴迷,给出了PROCEDURE ANALYZE()的以下输出

SELECT status FROM post PROCEDURE ANALYSE()\G
*************************** 1. row ***************************
             Field_name: crawling.post.status
              Min_value: done
              Max_value: pulled
             Min_length: 3
             Max_length: 6
       Empties_or_zeros: 0
                  Nulls: 0
Avg_value_or_avg_length: 3.7880
                    Std: NULL
      Optimal_fieldtype: ENUM('done','new','pulled') NOT NULL
Run Code Online (Sandbox Code Playgroud)

并使用以下命令将我的状态列转换为枚举:

ALTER TABLE post MODIFY COLUMN status ENUM('done', 'new', 'pulled') DEFAULT 'new';
Run Code Online (Sandbox Code Playgroud)

跳过DEFAULT'new'是可以的.


hei*_*erg 10

不,如果值包含在枚举中,您将不会丢失数据.