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

text como llava primaria

Estas en el tema de text como llava primaria en el foro de Mysql en Foros del Web. Hola amigos, Tengo una tabla cuya llave primaria es de tipo varchar(50) pero me veo en la necesidad de cambiar este tipo por text ya ...
  #1 (permalink)  
Antiguo 23/03/2006, 09:29
 
Fecha de Ingreso: agosto-2001
Ubicación: Lima
Mensajes: 123
Antigüedad: 22 años, 8 meses
Puntos: 0
text como llava primaria

Hola amigos,
Tengo una tabla cuya llave primaria es de tipo varchar(50) pero me veo en la necesidad de cambiar este tipo por text ya que el contenido del campo puede ser mayor a 50 incluso a 250 ... pero al tratar de cambiar de tipo a la llave primaria me da error:

ERROR 1170 (42000): BLOB/TEXT column 'email' used in key specification without a key length

creo que lo que intento hacer no es posible? habra alguna solucion?

Muy agradecida por su ayuda.
__________________
***************
Marivi
***************
  #2 (permalink)  
Antiguo 23/03/2006, 09:40
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Los campos de tipo TEXT o BLOB son campos que no pueden ser llaves primarias segun restricciones de mysql, ahora lo que deberias hacer en todo caso es aumentar una columna autoincrementable para tu tabla ya que no me parece buena idea que tu identificador sea tan grande, espero te sirva, suerte, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 13/08/2009, 19:13
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: text como llava primaria

Un saludo a todos.
Yo tengo una inquietud similar.
Necesite encriptar unas columnas de una tabla, ahora como hago para indexar esas columnas ? (No son llaves primaria el indexado es para que las busquedas sean mas rapidas)
Muchas gracias por su colaboracion
  #4 (permalink)  
Antiguo 13/08/2009, 19:14
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: text como llava primaria

Se me olvidaba las columnas son de tipo Blob.
Gracias
  #5 (permalink)  
Antiguo 13/08/2009, 21:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: text como llava primaria

Que tal gust_unad..

Por que las haces tipo blob? El tipo de datos blob es utilizado para manejar secuencias de datos binarios. Por ejemplo imagenes.

Para hacer esto, utiliza varchar como tipo de dato. Si tienes muchos caracteres, hazlo del tamaño que consideres necesario.

Código sql:
Ver original
  1. mysql> CREATE TABLE gust_unad(id INTEGER,nombre VARCHAR(1000));
  2. Query OK, 0 ROWS affected (0.01 sec)
  3.  
  4. mysql> CREATE INDEX unad ON gust_unad(nombre);
  5. Query OK, 0 ROWS affected, 2 warnings (0.07 sec)
  6. Records: 0  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> INSERT INTO gust_unad VALUES(1,md5('contraseña_encriptada'));
  9. Query OK, 1 ROW affected (0.05 sec)
  10.  
  11. mysql> INSERT INTO gust_unad VALUES(2,md5('contraseña_encriptada2'));
  12. Query OK, 1 ROW affected (0.00 sec)
  13.  
  14. mysql> SELECT *FROM gust_unad;
  15. +------+----------------------------------+
  16. | id   | nombre                           |
  17. +------+----------------------------------+
  18. |    1 | c0baa455aa96d2f5885eacd704dab733 |
  19. |    2 | 7678a96ead3c098c495b7f9e8464647d |
  20. +------+----------------------------------+
  21. 2 ROWS IN SET (0.00 sec)
  22.  
  23. mysql>

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 14/08/2009, 12:56
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: text como llava primaria

Buen dia y muchas gracias Huesos52.
Ya te habia escrito en privado, problema es el sgte:
Mi BD (MyIsam) tiene una tabla con mas de 57'000.000 de registros, con 10 campos todos de tipo varchar tiene que tener 4 campos encriptados lo cual he hecho con AES_ECNCRYPT pero resulta que me arrojaba error; para solucionarlo lo que hice fue dividirla en varias tablas con 10' de registro cada una primero las encripte luego indexe una de ellas y despues le adicione los registros de las otras pero me quedaron 2 tablas una con 29' y otra con 28' ;
no pude dejar una sola tabla siempre me salia un error diciendome que tenia que aplicar el REPAIR.
Luego lei en un foro que para encriptar era mejor los campos Blob asi que lo hice y me encripto toda la BD el problema surge cuando quiero Indexar los campos que he encriptado ya que las busquedas se haran por cualquiera de ellos (4 campos encriptados) y me arroja el error:
--MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length--

Ya en correo privado talvez di datos adicionales.
Muy agradecido por tu atencion y colaboracion.
Ruego me digas si no me he dado a entender.
Estare pendiente de tu repuesta.
  #7 (permalink)  
Antiguo 16/08/2009, 09:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: text como llava primaria

gust_unad. Como pasó tanto tiempo sin que me respondieras lo que te habia puesto por MP, lo borré.

El nuevo que me mandaste, omite el primer mensaje original y no logro aclararme.

Un buen ejercicio para solucionar los problemas, es decir paso a paso las tareas que se hicieron, que errores e inconvenientes se presentaron y que solución parcial o total se le dió al problema.

Cual es el tamaño de la cadena encriptada?
Cuando dices que te arrojaba error.. cual era el error?

El tema está interesante. Estaré pendiente
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 16/08/2009, 12:29
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: text como llava primaria

Saludos Huesos.
Gracias por contestar.
Tratare de darme a entender siendo conciso.
Tamaño de la tabla: 57'000.000 de reg
Tipo de BD: MyIsam
Numermo de campos: 10
Tipo de datos: Varchar(40) -- Maxima longitud
Bebe tener 4 campos encritados (indexados = para acelerar busqueda)
He tratado de Encriptar luego Indexar Error = Se corrompe la tabla y me manda a Repair
He tratado de Indexar luego Encriptar Error = Se corrompe la tabla y me manda a Repair.
Tambien he tratado de Dividir la T en tablas de a 10 mills luego encripto y luego indexo (De esta manera si deja hacerlo)
Luego creo una tabla con las mismas caracteristicas y le inserto los registros encritados e indexados --- pero maximo me asepto 29' mill por lo que me toco dejar 2 tablas la otra con 28' mill.
En un foro lei que la mejor manera era con campos de tipo blob y efectivamente se dejan encriptar los 57' mll de registros sin problema pero cuando trato de indexarlos me sale el Error
--MySQL Error 1170 (42000): BLOB/TEXT Column Used in Key Specification Without a Key Length--

No he podido resolver eso la idea es que me deje una sola tabla

Si no me doy a entender te ruego el favor me hagas las preguntas que necesites y las ire contestando

Mil gracias por tu tiempo y conocimiento
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:43.