Foros del Web » Programación para mayores de 30 ;) » .NET »

base de datos

Estas en el tema de base de datos en el foro de .NET en Foros del Web. hola tengo un ptoblema en mysql al crear una tabla me sale el sig error: Can't create table 'prueba009.productos' (errno: 150) he revisado los datosd ...
  #1 (permalink)  
Antiguo 03/11/2011, 09:02
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 6 meses
Puntos: 0
base de datos

hola tengo un ptoblema en mysql al crear una tabla me sale el sig error:
Can't create table 'prueba009.productos' (errno: 150)
he revisado los datosd y la no encuentro la diferencia en los ripos de datos, que puedo hacer
  #2 (permalink)  
Antiguo 03/11/2011, 09:17
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: base de datos

Hola sachis77 podrías colocar la query de la tabla que estas tratando de crear?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 03/11/2011, 10:04
 
Fecha de Ingreso: octubre-2011
Mensajes: 14
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: base de datos

Hola.

Solo hay dos posibles casos en los que nos podría fallar, con este error, nuestra creación de tablas en una base de datos.

Si los dos campos (Nombre de campo y el nombre de campo foráneo) usan tipos de campo incompatibles.

Si tu usas “On Delete Set Null” pero el campo no lo permite, te devolverá el error.

Saludos.
  #4 (permalink)  
Antiguo 03/11/2011, 10:07
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: base de datos

lo que dice manixalex es cierto por eso es bueno que coloques el codigo del query que estas tratando de crear para identificar el punto del error y ver las posibles FK que tengas.
Aportar ademas que hubo caso parecidos aqui te dejo el enlace :
can't create table errno 150
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 03/11/2011, 10:24
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: base de datos

estas son las tablas que están involucradas en la de artículos
mysql> describe proveedores;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| nitp | char(10) | NO | PRI | | |
| nombre | varchar(20) | YES | | NULL | |
| telefono | char(10) | YES | | NULL | |
| direccion | varchar(20) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

mysql> describe tproductos;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| codt | char(10) | NO | PRI | | |
| nomtprod | varchar(40) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> describe subtprod;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| codt | char(10) | NO | PRI | | |
| codsubtp | char(10) | NO | PRI | | |
| nomstp | varchar(30) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> describe medidas;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| codigo | int(10) | NO | PRI | 0 | |
| medida | char(10) | YES | | NULL | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql>
mysql> CREATE TABLE articulos
-> (codt char(10)
,
-> codsubtp char(10)
,
-> refer varchar(50)
,
-> nombre varchar(50)
,
-> prcosto integer
,
-> existencias integer
,
-> codigo int(10) ,
-> nitp char(10)
,
-> primary key (codt, codsubtp, refer)
,
-> foreign key (codt) REFERENCES tproductos (codigo)
,
-> foreign key (codt, codsubtp) REFERENCES subtprod (codt, codsubtp)
,
-> foreign key (nitp) REFERENCES proveedores (nitp)
,
-> foreign key (codigo) REFERENCES medidas (codigo) )
;
ERROR 1005 (HY000): Can't create table 'prueba009.articulos' (errno: 150)
mysql>
  #6 (permalink)  
Antiguo 03/11/2011, 10:33
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: base de datos

sachis77 para que obtengas mas ayuda sobre tu problema este hilo deberías derivarlo al Foro MYSQL ya que este problema es netamente del motor de base datos.

El error radica aquí :
Código MySQL:
Ver original
  1. -> foreign key (codt) REFERENCES tproductos (codigo)
  2. ,
  3. -> foreign key (codt, codsubtp) REFERENCES subtprod (codt, codsubtp)
si se elimina la primera linea y queda la segunda ya que en la segunda estas derivando 2 columnas como pk.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 03/11/2011 a las 10:45
  #7 (permalink)  
Antiguo 03/11/2011, 11:54
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: base de datos

okey voy a intenyar borrando esa y entrare al foro que me dices muchas gracias.
  #8 (permalink)  
Antiguo 03/11/2011, 12:00
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: base de datos

Comenta esta linea

Código MySQL:
Ver original
  1. -> FOREIGN key (codt) REFERENCES tproductos (codigo)
y deja solo
Código MySQL:
Ver original
  1. -> FOREIGN key (codt, codsubtp) REFERENCES subtprod (codt, codsubtp)
ya que como lo relacionas los 2 como fk, se hace como una cadena de secuencia y creo yo sería repetitivo e ilógico darle otra referencia nuevamente.
Pruébalo y nos comentas. Saludos!.
PDT: Haré una notificación para que lo promuevan al foro de MYSQL.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: sql
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 07:59.