2011-07-29 36 views
7

Me gustaría convertir una columna en mysql de varchar a enum. Si mis nuevos valores enum incluyen los valores existentes, ¿perderé los valores existentes en esa columna?Varchar a eNum

+2

Con preguntas como esta, la respuesta más fácil es intentar averiguarlo. Puede hacer esto en una copia de seguridad de la tabla para evitar el potencial de pérdida de datos. –

+1

¿Confiarás ciegamente en lo que leas aquí y te arriesgarás a perder los datos? –

+0

Permítanme no estar de acuerdo con mis seguidores programadores. Creo que las preguntas triviales pero interesantes tienen un espacio no SO. – Frankie

Respuesta

8

No, si los valores están incluidos en la enumeración, no perderá datos.

+0

gracias !! ¡funcionó! – MonOve

9

Para los adictos a copiar y pegar como yo, dada la siguiente salida de Procedimiento 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 

Y con el siguiente comando para convertir la columna de mi estado para ENUM:

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

que está bien omita el valor predeterminado 'nuevo'.

Cuestiones relacionadas