2010-04-24 8 views

Respuesta

9

No es diferente que la alteración de cualquier otra columna -

ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT(11) NOT NULL AUTO_INCREMENT 

esto cambia la columna en la tabla keyfieldpkey ser llamado keyfield2 - usted tiene que suministrar la definición después, como de costumbre.

+12

Esta solución causará el error 150. –

+4

Esto funciona cuando no hay claves externas. Otra respuesta sugiere volcar/restaurar toda la base de datos, lo que funcionará, pero solo descartar/recrear las claves/índices foráneos funcionó para mí. – penfold

+0

de acuerdo con @Pavel Rodionov, arroja el siguiente error: [HY000] [1025] Error al cambiar el nombre de xxx a yyy (errno: 150) –

1

Si está trabajando con InnoDB, entonces creo que no puede cambiar el nombre de las claves principales, al menos no puede hacerlo si las claves externas las referencian. Debe volcar la base de datos, cambiar el nombre de las columnas y hacer referencia a las claves en el archivo de volcado, y luego volver a cargar la base de datos.

6

Quizás tenga una restricción de clave externa en su lugar. Puede desactivarlos por SET foreign_key_constraints=0, pero debe recordar actualizar la base de datos posteriormente.

+0

¿Cómo cambio este valor? Cambio para el valor 1 después? –

+0

@RafaelGomesFrancisco ¿qué quieres decir? – Alex

3

Es posible que funcione una mala práctica. Pero podría exportar su db completo a un archivo de texto sql. Busque y reemplace el PK al que desea cambiar el nombre y luego restaure la base de datos en sql.

3

Deja la parte PRIMARY KEY de la declaración alternativa. La clave principal se actualizará automáticamente.

+0

Esta respuesta es la clave cuando recibes errores inesperados. ¡Estupendo! –

0

Si otras tablas tienen una clave foránea en su tabla, no puede cambiar el nombre de la columna usando alter table, arrojará el siguiente error: [HY000] [1025] Error al cambiar el nombre de xxx a yyy (errno: 150) usted debe:

  • caída de las claves externas de otras tablas que señalan a la clave principal desea cambiar el nombre
  • cambiar el nombre de la clave primaria
  • añadir la columna extranjera a otros cuadros

Al cambiar el nombre de una tabla en Intellij, genera el código do drop y agrega la clave foránea.

Cuestiones relacionadas