我想将mysql中的列从varchar转换为enum。如果我的新枚举值包含现有值,我会丢失该列中的现有值吗?
答案 0 :(得分:13)
对于像我这样的复制粘贴迷,给出了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
使用以下命令将我的状态列转换为枚举:
ALTER TABLE post MODIFY COLUMN status ENUM('done', 'new', 'pulled') DEFAULT 'new';
可以跳过DEFAULT'new'。
答案 1 :(得分:9)
不,如果值包含在枚举中,则不会丢失数据。