domingo, 29 de abril de 2012

Error Code: 1005 - Can't create table 'mydb.vehiculo' (errno: 150)

EL MOLESTO ERROR 1005 DE MYSQL


Buenos días amigos internautas, en el dia de hoy les quiero compartir con ustedes un suceso que q de seguro le a pasado a muchos y es el molesto letrero que sale al momento de subir nuestro script o hacer la respectiva relación en nuestra base de datos.
bueno vallamos al grano porque a de salir este error, es muy sencillo por que podemos de estar inrunpiendo cual quiera de estas siguientes reglas miremos:


  • Recordemos pasar nuestra tabla a formato InnoDB porque puede que nos este fallando porque no lo tenemos en este formato
  • Si los dos campos (Nombre de campo y el nombre de campo foráneo) usan tipos de campo incompatibles. (si estas intentando hacer una llave foránea del tipo int y la estas intentando referenciar con una variable de tipo (double, varchar, etc), recordemos que para referenciar una llave foráneas ambas deben ser del mismo tipo y tamaño en pocas palabras deben estar constituidas(creadas) con las mismas especificaciones .)

  • Si tu usas “On Delete Set Null” pero el campo no lo permite, MySQL te devolverá el error. (Esto hace parte de la anterior ya que, cabe recordar las dos variables tanto la que se desea referenciar y la reverenciada deben tener las mismas especificaciones).
Un ejemplo gráfico para este seria :
Como vemos la llave foranea que vamos a crear es Tipo lado izquierdo de la imagen tiene como atributos en la parte inferior activados (On Delete, On Update) y tiene activados(No action) en sus respectivos atributos.
ahora en la parte derecha de la imagen vemos que la variable que vamos a referencias es idtipo_usuario tiene como atributos activados tambien (On Delete, On Update) y tiene activado (No action) pero solo en (On Delete) y en (On Update) tiene es (Set null). esto repercutiria en el error que estamos tratando evitar, recuerden como les e dicho tanto la llave foranea como la referencia deben tener todo igual.

  • Y la tercera es un error infantil como todos anteriores, pero suele pasar es intentar crear otra llave foránea con un nombre ya declarado al momento de crear otra llave foránea
en mi caso fue yo estuve creando mi modela de la base de datos en MSQL WORKBENCH y al momento de hacer la coneccion para cargar mi modelado a la base de datos me arrojaba ese error no me explicaba porque y luego de 5 minutos me di cuenta que al momento de hacer la relación entre mi tabla vehículo y mi tabla persona el programa me estaba referenciando con dos campos el de idpersona y id empresa a la llave foránea y eso no se puede.

Espero que les sirva, Éxitos con sus trabajos.

No olviden comentar