2011-07-29 7 views
7

私は、mysqlの列をvarcharからenumに変換したいと思います。新しい列挙値に既存の値が含まれている場合、その列の既存の値が失われますか?VarcharからeNum

+2

このような質問をすると、最も簡単な答えは試してみることです。これは、データの損失の可能性を避けるために、テーブルのバックアップで行うことができます。 –

+1

あなたがここで読んだことを盲目的に信頼し、データを失う危険がありますか? –

+0

フォローしているプログラマーに私が同意できないようにする。私は、自明ではあるが面白い質問にはスペースがないと信じています。 – Frankie

答えて

8

いいえ、値が列挙型に含まれていれば、データは失われません。私のようなコピーペースト中毒のために

+0

ありがとうございます!出来た! – MonOve

9

、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'をスキップします。

関連する問題