elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Database no respeta la logica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Database no respeta la logica  (Leído 6,382 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Database no respeta la logica
« en: 17 Marzo 2010, 14:29 pm »

Hola gente.
Estoy leyendo el libro: La Biblia de MySQL, para aprender un poco así los jodo menos con pregustas tontas.

En el libro dicen que haga algo, que hago en MySQL, pero los comportamientos son diferentes..

Será porque tengo una version diferente de MySQL a la que se usó para escribir el libro?'

he aqui:



En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Database no respeta la logica
« Respuesta #1 en: 17 Marzo 2010, 14:36 pm »

Hola  :D

Me alegro que hayas podido descargar el Pdf  ;)

Verifica que realmente el campo ID sea SIGNED y no UNSIGNED

DESCRIBE TABLE test1


En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Database no respeta la logica
« Respuesta #2 en: 17 Marzo 2010, 15:01 pm »

Código
  1. +-------+------------------------------+------+-----+---------+-------+
  2. | FIELD | TYPE                         | NULL | KEY | DEFAULT | Extra |
  3. +-------+------------------------------+------+-----+---------+-------+
  4. | id    | tinyint(3) UNSIGNED ZEROFILL | YES  |     | NULL    |       |
  5. +-------+------------------------------+------+-----+---------+-------+
  6. 1 ROW IN SET (0.01 sec)
  7.  

Fijate que en la imagen se nota perfectamente que la he creado con zerofill..
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Database no respeta la logica
« Respuesta #3 en: 17 Marzo 2010, 15:07 pm »

Código:
Fijate que en la imagen se nota perfectamente que la he creado con zerofill..

Si Skeletron sin duda, pero aunque desconozco que version de MySQL usaron ahi, o si aplicaron algo despues de crear la tabla y no la especificaron en el libro (Tranquilo muchos de estos libros vienen con ejemplos a medias  ;) )

El problema en tu caso, y que no es tu culpa claro, es que el campo ID es de tipo UNSIGNED (Digase que no accepta numeros negativos)  ;)  podrias considerar cambiar ese tipo a SIGNED.
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Database no respeta la logica
« Respuesta #4 en: 17 Marzo 2010, 15:18 pm »

Hola nuevamente  :D

Efectivamente Skeletron, como te decia y para verificar lo que estaba diciendo, acabo de visitar la web de mysql.com  ;)  y disculpame si te recomende que cambiaras el campo a SIGNED  (pense que en este caso iba a ser posible) pero veo que no  :-(

Citar
Si especifica ZEROFILL para columnas numéricas,, MySQL añade automáticamente el atributo UNSIGNED en la columna.

Fuente: http://dev.mysql.com/doc/refman/5.0/es/numeric-type-overview.html

Aparentemente, lo que quieres hacer (numeros negativos) no es posible con el la funcionalidad Zerofill ya que automaticamente le asigna un atributo UNSIGNED (No negativos) al campo en cuestion .... no vas a poder cambiar el campo de UNSIGNED a SIGNED si le aplicas Zerofill.... pense que se podia, no, no se puede  :P Mysql no aplica el cambio y hace caso omiso.




En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Database no respeta la logica
« Respuesta #5 en: 17 Marzo 2010, 15:23 pm »

Si si, eso mismo leí recien.

Pero mi problema radica en otra parte:

Si intento ingresar un numero negativo, tendria que ingresar el 000, como lo miestra el libro cuando hace el select... Pero a mi no se me ingresa ni en 000 ni nada.. me da error..

Entiendes lo que digo?
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Database no respeta la logica
« Respuesta #6 en: 17 Marzo 2010, 15:42 pm »

Quisiera entender eso ultimo que dices... pero no  :rolleyes:

Porque no te deja ingresar 000 si 0 no es negativo y el tipo de datos tinyint soporta 3 cifras de 0 a 255 positivos.  :silbar:
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Database no respeta la logica
« Respuesta #7 en: 17 Marzo 2010, 16:25 pm »

Tifa.. Mira la imagen...
Mira el Libro y mira lo mio.

Mira que el libro ingresó el valor -1, y fue ingresado correctamente (aunque se transformo a 000.. miralo cuando hace el SELECT en el libro)
Pero yo ingreso -1, y da un error
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Database no respeta la logica
« Respuesta #8 en: 17 Marzo 2010, 16:36 pm »

Lo he venido observando desde inicio Skeletron  :rolleyes:

Pero lamentablemente, no se basados en que MySQL esta dicho libro, pero actualmente con el MySQL 5.4 al menos que es el que yo tengo... lo del libro ya no aplica  ;) porque no aplica? por lo que te dije anteriormente. Un campo al asignarle la clausula ZEROFILL automaticamente se le agrega el atributo UNSIGNED que no va a permitir jamas que inserter numeros negativos de ningun tipo  ;) porque MySQL hace eso ahora y en el ejemplo del libro no? por diferencias de versiones es la posibilidad mas amplia que puedo tener.

No va a transformarte -1, ni -20 en 000 porque actualmente MySQL no accepta negativos en campos ZEROFILL que le atacha el atributo  UNSIGNED.

Puedes leer el libro como una guia, pero ten en cuenta que es algo antiguo y los ejemplos pueden estar basados en una version de MySQL que en aquel entonces soportaba estos cambios. Actualmente, no, no puedes ingresar numeros negativos en ZEROFILL independientemente del ejemplo mostrado. Hago referencia al funcionamiento actual de MySQL y por esa razon te pegue la URL anterior.
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Database no respeta la logica
« Respuesta #9 en: 17 Marzo 2010, 16:42 pm »

Perfecto.
En el libro leí que decía que le agregaba un "UNSIGNED" automaticamente y todo eso, pero parece que la unica diferencia, es que a ellos les permite agregar el dato..
Es la version 4.1 de MySQL la que hablan en el libro.

Igualmente, no es problema.. Seguramente en la version actual cambiaron eso y listo :)

Cuando termine de leer este libro, sería importante leer algun "suplemento" que me actualice los cambios que se produjeron de la version 4.1 a la actual...
Si sabes de algo, me dices.. (EN ESPAÑOL!) :)

Tnks!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No se respeta config de impresión
Windows
SONIC88 2 2,208 Último mensaje 13 Febrero 2011, 18:27 pm
por SONIC88
Buscador que respeta la privacidad
Dudas Generales
Stoya 4 3,199 Último mensaje 21 Febrero 2011, 04:28 am
por Socket_0x01
Un booleano no me respeta
Java
reygecko 5 2,974 Último mensaje 24 Diciembre 2012, 18:46 pm
por reygecko
MediaMarkt no respeta una oferta y amenaza con denunciar a un cliente por ...
Noticias
wolfbcn 3 1,422 Último mensaje 17 Mayo 2019, 19:55 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines