Jump to content


Photo

[RESUELTO] Error al tratar de modificar tabla


  • Please log in to reply
9 replies to this topic

#1 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 30 November 2011 - 09:01 AM

estoy tratando de modificar una tabla y me salta el siguiente error:



delphi
  1. SQL Message : -607
  2. This operation is not defined for system tables.
  3.  
  4. Engine Code    : 335544351
  5. Engine Message :
  6. unsuccessful metadata update
  7. Cannot change datatype for TOT_IMP.  Conversion from base type BIGINT to FLOAT is not supported.



¿a que se debe esto?
  • 0

#2 felipe

felipe

    Advanced Member

  • Administrador
  • 3283 posts
  • LocationColombia

Posted 30 November 2011 - 09:17 AM

Desconociendo la instrucción, se puede ver que dice ser por esto:

Cannot change datatype for TOT_IMP.  Conversion from base type BIGINT to FLOAT is not supported.



Saludos!
  • 0

#3 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 30 November 2011 - 09:21 AM

Desconociendo la instrucción, se puede ver que dice ser por esto:

Cannot change datatype for TOT_IMP.  Conversion from base type BIGINT to FLOAT is not supported.



Saludos!


Hola, entiendo el mensaje , lo que no se es porque me salta el error, es un comportamiento extraño, ya que si elimino el campo y lo vuelvo a crear pero como float, este si me funciona...


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14456 posts
  • LocationMéxico

Posted 30 November 2011 - 10:05 AM

Y desde donde lo estas creando, con un script o directo en un manejador.

Salud OS
  • 0

#5 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 30 November 2011 - 10:26 AM

Y desde donde lo estas creando, con un script o directo en un manejador.

Salud OS


hola, desde el ibexpert...
ya habia creado la tabla y esta tenia registros, por lo que el tratar de modificarla me salta el error y entonces pense que era porque tenia registros , asi que vacie la tabla para tratar de modificarla y me sigue saltanto el error, la unica solucion que encontre fue borrar el campo y volverlo a crear pero con el otro formato...
no se a que se deba esto. :s
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14456 posts
  • LocationMéxico

Posted 30 November 2011 - 10:32 AM

Intentemos reproducir el problema, pasanos la estructura de tu tabla (con el campo bugint) y la recreamos para ver si podemos encontrar el porque.

Salud OS
  • 0

#7 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1484 posts
  • LocationMallorca

Posted 30 November 2011 - 10:33 AM

Hola.

El error te dice que no está permitido cambiar un campo BIGINT a FLOAT (ya que muchos de los números grandes que caben en un campo BIGINT no se pueden representar bajo un campo FLOAT).

La solución es sencilla, utiliza un campo intermedio. Es decir, creas un segundo campo TMP de tipo FLOAT, le copias los datos que tienes en el campo original, borras el campo original y renombras el segundo campo para que tenga el mismo nombre que el original.

ALTER TABLA ADD TMP FLOAT;

UPDATE TABLA set TMP = cast(ORIGINAL as FLOAT);

ALTER TABLA DROP ORIGINAL;

ALTER TABLA ALTER TMP TO ORIGINAL;


Saludos.
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14456 posts
  • LocationMéxico

Posted 30 November 2011 - 10:36 AM

Pues ahi esta la respuesta, mas que error es un prevención para evitar inconsistencia en los datos.

Gracias Marc

Salud OS
  • 0

#9 look

look

    Advanced Member

  • Miembros
  • PipPipPip
  • 418 posts
  • LocationLa Ceiba-Atlantida-Honduras

Posted 30 November 2011 - 10:53 AM

Hola.

El error te dice que no está permitido cambiar un campo BIGINT a FLOAT (ya que muchos de los números grandes que caben en un campo BIGINT no se pueden representar bajo un campo FLOAT).

La solución es sencilla, utiliza un campo intermedio. Es decir, creas un segundo campo TMP de tipo FLOAT, le copias los datos que tienes en el campo original, borras el campo original y renombras el segundo campo para que tenga el mismo nombre que el original.

ALTER TABLA ADD TMP FLOAT;

UPDATE TABLA set TMP = cast(ORIGINAL as FLOAT);

ALTER TABLA DROP ORIGINAL;

ALTER TABLA ALTER TMP TO ORIGINAL;


Saludos.


Gracias amigo, excelente solucion.
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6295 posts
  • LocationArgentina

Posted 30 November 2011 - 05:04 PM

Que yo sepa SIEMPRE se ha requerido de un campo auxiliar para pasar los datos de un campo a otro cuando se necesita cambiarle formato alguno y luego eliminarlos.

Saludos,
  • 0




IP.Board spam blocked by CleanTalk.