error 1005 mysql

keto
10 de Abril del 2004
hola me gustaria que me explique el error 1005 cuando creo una tabla y que me comenten que error tengo con estas tablas

CREATE TABLE `provincias` (
`id_provi` int unsigned NOT NULL default '0',
`nom_provi` char(50) default NULL,
PRIMARY KEY (`id_provi`)
) TYPE=INNODB;


CREATE TABLE `clientes` (
`id_cli` int unsigned NOT NULL default '0',
`id_provi` int default NULL,
`nom_cli` char(50) default NULL,
`ape_cli` char(50) default NULL,
`cuil` char(50) default NULL,
`cuit` char(50) default NULL,
`dir_cli` char(50) default NULL,
`tel` char(50) default NULL,
`cond_iva` int unsigned default NULL,
PRIMARY KEY (`id_cli`),
INDEX(id_provi),
FOREIGN KEY(id_provi) REFERENCES provincias(`id_provi`)
) TYPE=INNODB;

cuando creo la tabla de cliente me sale un mensaje
error 1005 can't create table (errno: 150)

muchas gracias
keto

LUIFER
10 de Abril del 2004
Hola, yo tengo el mismo problema y estoy trabajando con MySQL-Front, alguien me puede explicar este error de MySQL con el ejemplo de los clientes y las provincias??

Edeldir
10 de Abril del 2004
Debes crear un indice para el campo al que vas a enlazar ANTES de la Foreign Key, por ejemplo:
key segment_part_segment_id (segment_id),
foreign key (segment_id) references segment(id),

lasweb
10 de Abril del 2004
Esto que te paso mas abajo esta extraido de un articulo de este mismo lugar http://www.programacion.com/

para leerlo mas in extenso te recomiendo que entres en http://www.programacion.com/tutorial/mysql_referencial/


Las columnas correspondientes en la clave for谩nea y en la clave referenciada deben tener tipos de datos similares para que puedan ser comparadas sin la necesidad de hacer una conversi贸n de tipos. El tama帽o y el signo de los tipos enteros debe ser el mismo. En las columnas de tipo caracter, el tama帽o no tiene que ser el mismo necesariamente.

Si MySQL da un error cuyo n煤mero es el 1005 al momento de ejecutar una sentencia CREATE TABLE, y el mensaje de error se refiere al n煤mero 150, la creaci贸n de la tabla fall贸 porque la restricci贸n de la clave for谩nea no se hizo de la manera adecuada. De la misma manera, si falla una sentencia ALTER TABLE y se hace referencia al error n煤mero 150, esto significa que la definici贸n de la restricci贸n de la clave for谩nea no se hizo adecuadamente. A partir de la versi贸n 4.0.13 de MySQL, se puede usar la sentencia SHOW INNODB STATUS para ver una explicaci贸n detallada del 煤ltimo error que se gener贸 en relaci贸n a la definici贸n de una clave for谩nea.