2011-07-29 55 views
7

我想将mysql中的列从varchar转换为enum。如果我的新枚举值包含现有值,我会失去该列中的现有值吗?Varchar to eNum

+2

像这样的问题,最简单的答案就是试着找出答案。您可以在表的备份上执行此操作,以避免数据丢失的可能性。 –

+1

你会盲目信任你在这里阅读的任何内容,并有可能丢失数据吗? –

+0

允许我不同意我的跟随程序员。我确实认为那些微不足道但有趣的问题没有SO。 – Frankie

回答

8

不,如果值包含在枚举中,则不会丢失数据。

+0

谢谢!!有效! – MonOve

9

对于复制粘贴迷们喜欢自己,因为从程序输出以下ANALYSE()

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 

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

ALTER TABLE post MODIFY COLUMN status ENUM('done', 'new', 'pulled') DEFAULT 'new'; 

它的确定跳过默认'新'。