Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] error al renombrar un campo id

Estas en el tema de error al renombrar un campo id en el foro de Mysql en Foros del Web. después de que me recomendaran que los id de cada tabla no los nombrara solo con id, me dirigí a cambiar esta mala práctica de ...
  #1 (permalink)  
Antiguo 12/06/2013, 11:33
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
error al renombrar un campo id

después de que me recomendaran que los id de cada tabla no los nombrara solo con id, me dirigí a cambiar esta mala práctica de la BD que uso para aprender y me encuentro que al intentar renombrar el id de la tabla usuarios me da un error mientras que renombrar el id de la tabla posts sí me deja.

el error es este

Cita:
#1025 - Error on rename of '.\hoteles\#sql-874_10e' to '.\hoteles\usuarios' (errno: 150)
¿por qué uno sí y el otro no?
  #2 (permalink)  
Antiguo 12/06/2013, 12:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error al renombrar un campo id

Postea el create table de la tabla:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE usuarios
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/06/2013, 12:41
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: error al renombrar un campo id

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Postea el create table de la tabla:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE usuarios
este es el create table, sinceramente gracias por la ayuda que me estás prestando

Cita:
CREATE TABLE `usuarios` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`usuario` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_spanish2_ci NOT NULL,
`email` varchar(100) COLLATE utf32_spanish_ci NOT NULL,
`passwd` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_spanish2_ci NOT NULL,
`nombre` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_spanish2_ci NOT NULL,
`apellidos` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_spanish2_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf32 COLLATE=utf32_spanish_ci
  #4 (permalink)  
Antiguo 12/06/2013, 13:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error al renombrar un campo id

No parece haber un error en la estructura.
¿Cómo es la sentencia que escribiste para hacer el cambio?
¿Esa PK es FK en alguna tabla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/06/2013, 14:02
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: error al renombrar un campo id

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No parece haber un error en la estructura.
¿Cómo es la sentencia que escribiste para hacer el cambio?
¿Esa PK es FK en alguna tabla?
Lo hago mediante el gestor phpmyadmin, carezco de los conocimientos sql para realizarlo a mano.
  #6 (permalink)  
Antiguo 12/06/2013, 15:08
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: error al renombrar un campo id

Hola guardarmicorreo:

Revistaste lo que comentó gnzsoloyo acerca de que si este campo es un campo llave???

Algunos gestores pueden "enmascarar" errores debido a que agregan código adicional en las consultas, por lo que es conveniente que pruebes directamente en una consola de MySQL... Checa esta liga:

http://dev.mysql.com/doc/refman/5.0/es/alter-table.html

Ahí encontrarás la sintaxis para renombrar un campo mediante una sentencia y no con el gestor... en realidad no veo ningún problema, sería así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE `usuarios` (
  2.     -> `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.     -> `usuario` VARCHAR(100) CHARACTER SET utf8mb4
  4.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  5.     -> `email` VARCHAR(100)
  6.     -> COLLATE utf32_spanish_ci NOT NULL,
  7.     -> `passwd` VARCHAR(100) CHARACTER SET utf8mb4
  8.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  9.     -> `nombre` VARCHAR(100) CHARACTER SET utf8mb4
  10.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  11.     -> `apellidos` VARCHAR(100) CHARACTER SET utf8mb4
  12.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  13.     -> PRIMARY KEY (`id`),
  14.     -> UNIQUE KEY `id` (`id`)
  15.     -> COLLATE=utf32_spanish_ci;
  16. Query OK, 0 rows affected (0.23 sec)
  17.  
  18. mysql> ALTER TABLE `usuarios` CHANGE `id` `id_usuario`
  19.     -> INT(11) NOT NULL AUTO_INCREMENT;
  20. Query OK, 0 rows affected (0.35 sec)
  21. Records: 0  Duplicates: 0  Warnings: 0

Pero en mi caso, la tabla no es FK de ninguna otra tabla, por eso la pregunta de gnzsoloyo.

Saludos
Leo.
  #7 (permalink)  
Antiguo 12/06/2013, 15:25
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: error al renombrar un campo id

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola guardarmicorreo:

Revistaste lo que comentó gnzsoloyo acerca de que si este campo es un campo llave???

Algunos gestores pueden "enmascarar" errores debido a que agregan código adicional en las consultas, por lo que es conveniente que pruebes directamente en una consola de MySQL... Checa esta liga:

http://dev.mysql.com/doc/refman/5.0/es/alter-table.html

Ahí encontrarás la sintaxis para renombrar un campo mediante una sentencia y no con el gestor... en realidad no veo ningún problema, sería así:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE `usuarios` (
  2.     -> `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.     -> `usuario` VARCHAR(100) CHARACTER SET utf8mb4
  4.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  5.     -> `email` VARCHAR(100)
  6.     -> COLLATE utf32_spanish_ci NOT NULL,
  7.     -> `passwd` VARCHAR(100) CHARACTER SET utf8mb4
  8.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  9.     -> `nombre` VARCHAR(100) CHARACTER SET utf8mb4
  10.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  11.     -> `apellidos` VARCHAR(100) CHARACTER SET utf8mb4
  12.     -> COLLATE utf8mb4_spanish2_ci NOT NULL,
  13.     -> PRIMARY KEY (`id`),
  14.     -> UNIQUE KEY `id` (`id`)
  15.     -> COLLATE=utf32_spanish_ci;
  16. Query OK, 0 rows affected (0.23 sec)
  17.  
  18. mysql> ALTER TABLE `usuarios` CHANGE `id` `id_usuario`
  19.     -> INT(11) NOT NULL AUTO_INCREMENT;
  20. Query OK, 0 rows affected (0.35 sec)
  21. Records: 0  Duplicates: 0  Warnings: 0

Pero en mi caso, la tabla no es FK de ninguna otra tabla, por eso la pregunta de gnzsoloyo.

Saludos
Leo.
ahhh, lo siento, se me pasó responder esa pregunta.

el campo id de usuarios es primary key y tiene foreing key en tres tablas para relacionarlas
  #8 (permalink)  
Antiguo 12/06/2013, 16:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error al renombrar un campo id

Bueno, ese es el problema, porque el cambio de nombre MySQL lo hace creando una copia del otro y luego destruyendo el original. Eso no funciona para los campos usados como FK en otra tabla.
Tienes que quitar las constraint, primero, luego cambiar el nombre, y volver a definir las FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 12/06/2013, 18:21
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: error al renombrar un campo id

madre mía, no quiero imaginar si me hubiera pasado en un proyecto que requiera por ejemplo 100 tablas.

¿este impedimento o limitación es solo para el gesto phpmyadmin o también para el manejo por consola?

cómo os agradezco la ayuda, sinceramente gracias
  #10 (permalink)  
Antiguo 12/06/2013, 18:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error al renombrar un campo id

No es de phpMyadmin. Es un tema del kernel de MySQL que lo hace de esa forma.
En realidad es más sencillo de lo que parece, pero si, si hubieses hecho esto en una base productiva hubiese sido una catástrofe.
En realidad el tema es que uno se acostumbra a diseñar las tablas ya siguiendo ciertas reglas mnemotécnicas, como la de poner siempre un prefijo a los nombres de los campos para mayor claridad. Entonces no se suele lidiar con estas cosas, cuando ya trabajas a nivel profesional.
De hecho, es habitual que en las empresas de desarrollo existan documentos que especifiquen las normalizaciones a respetar para todas estas cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 13/06/2013, 03:08
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: error al renombrar un campo id

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No es de phpMyadmin. Es un tema del kernel de MySQL que lo hace de esa forma.
En realidad es más sencillo de lo que parece, pero si, si hubieses hecho esto en una base productiva hubiese sido una catástrofe.
En realidad el tema es que uno se acostumbra a diseñar las tablas ya siguiendo ciertas reglas mnemotécnicas, como la de poner siempre un prefijo a los nombres de los campos para mayor claridad. Entonces no se suele lidiar con estas cosas, cuando ya trabajas a nivel profesional.
De hecho, es habitual que en las empresas de desarrollo existan documentos que especifiquen las normalizaciones a respetar para todas estas cosas.
muchísimas gracias, lo recordaré para la posteridad. cada día aprendiendo más y con vuestra ayuda mucho mejor.

Etiquetas: campo, renombrar, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:37.