Programación en castellano
Inicio > Foros > MySQL > errno:150 mysql
-Foros de debate

MySQL
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

errno:150 mysql
Enviado por montver el día 17 de marzo de 2004

hola,
Espero que alguien me pueda ayudar.
Resulta que intento crear tablas con varias claves foraneas y la opcion INNODB, pero me da error y no soy capaz de saber que significa.

ERROR que me da:
can't create table BD/Estado.frm (errno:150)

Muchas gracias

 
Re: errno:150 mysql
Enviado por keto el día 19 de marzo de 2004

hola montver yo no tengo la solucion pero tengo el mismo problema si llego a ver que es te digo si me gustaria que vos me contestes
chau gracias

 
Re: Re: errno:150 mysql
Enviado por dav_gij el día 31 de marzo de 2004

a mi me pasa lo mismo y no se que es, porque con otras tablas que hice si las podia enlazar bien

 


Re: errno:150 mysql
Enviado por Edeldir el día 1 de abril de 2004

En otra seccion de esta web creo ke konteste hoy lo mismo
Hay ke crear un indice antes del campo de la foreign key:
key segment_part_segment_id (segment_id),
foreign key (segment_id) references segment(id),

por ejemplo

 
Re: Re: errno:150 mysql
Enviado por Eduardo Cortes el día 28 de septiembre de 2004

Podrias corregir este, me sigue saliendo el error hacien lo que indicas, una tabla si se corrio como indicas, esta no

CREATE TABLE `membresia_impresor` (
`Id_Tipo_Membresia_Impresor` VARCHAR(30) NOT NULL,
`Limiteimpresiones` INTEGER(6) NOT NULL,
`Descripcion` VARCHAR(30) NULL,
PRIMARY KEY(`Id_Tipo_Membresia_Impresor`)
)
TYPE=InnoDB;

CREATE TABLE `membresia_cliente` (
`Id_Tipo_Membresia_Empresa` VARCHAR(30) NOT NULL,
`Limitepersonal` INTEGER(6) NOT NULL,
`Descripcion` VARCHAR(30) NOT NULL,
PRIMARY KEY(`Id_Tipo_Membresia_Empresa`)
)
TYPE=InnoDB;

CREATE TABLE `PropiedadesImpresora` (
`idPropiedadesImpresora` INTEGER(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`Descripcion` VARCHAR(30) NULL,
PRIMARY KEY(`idPropiedadesImpresora`)
)
TYPE=InnoDB;

CREATE TABLE `tipo_usuario` (
`Id_Tipo_Usuario` TINYINT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
`Rol` VARCHAR(30) NOT NULL,
`Descripcion` VARCHAR(50) NULL,
PRIMARY KEY(`Id_Tipo_Usuario`)
)
TYPE=InnoDB;

CREATE TABLE `TipoTransaccion` (
`idTipoTransaccion` INTEGER(2) UNSIGNED NOT NULL AUTO_INCREMENT,
`Descripcion` VARCHAR(30) NOT NULL,
`Operacion` ENUM('Suma','Resta') NOT NULL DEFAULT 'Suma',
`Observaciones` TEXT NULL,
PRIMARY KEY(`idTipoTransaccion`)
)
TYPE=InnoDB;

CREATE TABLE `administrador` (
`Id_Administrador` INTEGER(3) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Administrador_2` INTEGER(3) UNSIGNED NOT NULL,
`RazonSocial` VARCHAR(100) NOT NULL,
`Direccion1` VARCHAR(30) NOT NULL,
`Direccion2` VARCHAR(30) NOT NULL,
`Telefono` VARCHAR(15) NOT NULL,
`Email` VARCHAR(50) NOT NULL,
`CodigoPostal` INTEGER(6) UNSIGNED NOT NULL,
`Localidad` VARCHAR(30) NOT NULL,
`Municipio` VARCHAR(30) NOT NULL,
`Estado` VARCHAR(30) NOT NULL,
`RFC` VARCHAR(15) NOT NULL,
`FechadeAlta` DATE NOT NULL DEFAULT '0000-00-00',
`FechadeBaja` DATE NULL,
PRIMARY KEY(`Id_Administrador`),
INDEX `administrador_FKIndex1`(`Id_Administrador_2`),
FOREIGN KEY(`Id_Administrador_2`)
REFERENCES `administrador`(`Id_Administrador`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Cliente` (
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Administrador` INTEGER(3) UNSIGNED NOT NULL,
`Id_Tipo_Membresia_Empresa` VARCHAR(30) NOT NULL,
`Direccion1` VARCHAR(30) NOT NULL,
`Direccion2` VARCHAR(30) NOT NULL,
`Telefono` VARCHAR(15) NULL,
`Email` VARCHAR(50) NOT NULL,
`CodigoPostal` INTEGER(6) UNSIGNED NOT NULL,
`Localidad` VARCHAR(30) NOT NULL,
`Municipio` VARCHAR(30) NOT NULL,
`Estado` VARCHAR(30) NOT NULL,
`RFC` VARCHAR(15) NOT NULL,
`Rutaimagenes` VARCHAR(255) NULL,
`Fechadealta` DATE NOT NULL DEFAULT '0000-00-00',
`Fechadebaja` DATE NULL,
PRIMARY KEY(`Id_Cliente`),
INDEX `Cliente_FKIndex1`(`Id_Tipo_Membresia_Empresa`),
INDEX `Cliente_FKIndex2`(`Id_Administrador`),
INDEX `Cliente_index1904`(`Id_Cliente`),
FOREIGN KEY(`Id_Tipo_Membresia_Empresa`)
REFERENCES `membresia_cliente`(`Id_Tipo_Membresia_Empresa`)
ON DELETE SET NULL
ON UPDATE NO ACTION,
FOREIGN KEY(`Id_Administrador`)
REFERENCES `administrador`(`Id_Administrador`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `impresor` (
`Id_Impresor` INTEGER(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Administrador` INTEGER(3) UNSIGNED NOT NULL,
`Id_Tipo_Membresia_Impresor` VARCHAR(30) NOT NULL,
`RazonSocial` VARCHAR(100) NOT NULL,
`Direccion1` VARCHAR(30) NOT NULL,
`Direccion2` VARCHAR(30) NOT NULL,
`Telefono` VARCHAR(15) NULL,
`Email` VARCHAR(50) NOT NULL,
`CodigoPostal` INTEGER(6) UNSIGNED NOT NULL,
`Localidad` VARCHAR(30) NOT NULL,
`Municipio` VARCHAR(30) NOT NULL,
`Estado` VARCHAR(30) NOT NULL,
`RFC` VARCHAR(15) NOT NULL,
`Fechadealta` DATE NULL,
`Fechadebaja` DATE NULL,
PRIMARY KEY(`Id_Impresor`),
INDEX `impresor_FKIndex1`(`Id_Tipo_Membresia_Impresor`),
INDEX `impresor_FKIndex2`(`Id_Administrador`),
INDEX `impresor_index1907`(`Id_Impresor`),
FOREIGN KEY(`Id_Tipo_Membresia_Impresor`)
REFERENCES `membresia_impresor`(`Id_Tipo_Membresia_Impresor`)
ON DELETE SET NULL
ON UPDATE NO ACTION,
FOREIGN KEY(`Id_Administrador`)
REFERENCES `administrador`(`Id_Administrador`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `usuario` (
`Id_Usuario` INTEGER(6) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Cliente` INTEGER(5) UNSIGNED NULL,
`Id_Tipo_Usuario` TINYINT(2) UNSIGNED NULL,
`Id_Administrador` INTEGER(3) UNSIGNED NULL,
`Id_Impresor` INTEGER(5) UNSIGNED NULL,
`Nombre` VARCHAR(30) NOT NULL,
`Clave` VARCHAR(50) NOT NULL,
`Email` VARCHAR(30) NOT NULL,
`Status` CHAR(1) NOT NULL,
`Fecha_Alta` DATE NOT NULL DEFAULT '0000-00-00',
`Fecha_Baja` DATE NULL,
PRIMARY KEY(`Id_Usuario`),
INDEX `usuario_FKIndex1`(`Id_Administrador`),
INDEX `usuario_FKIndex2`(`Id_Tipo_Usuario`),
INDEX `usuario_FKIndex3`(`Id_Cliente`),
INDEX `usuario_FKIndex4`(`Id_Impresor`),
FOREIGN KEY(`Id_Administrador`)
REFERENCES `administrador`(`Id_Administrador`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Tipo_Usuario`)
REFERENCES `tipo_usuario`(`Id_Tipo_Usuario`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Impresor`)
REFERENCES `impresor`(`Id_Impresor`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
TYPE=InnoDB;

CREATE TABLE `Servicios` (
`idServicios` INTEGER(6) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Impresor` INTEGER(5) UNSIGNED NOT NULL,
`Descripcion` VARCHAR(50) NULL,
`Precio` DECIMAL NULL,
`Observasiones` TEXT NULL,
PRIMARY KEY(`idServicios`),
INDEX `Servicios_FKIndex1`(`Id_Impresor`),
FOREIGN KEY(`Id_Impresor`)
REFERENCES `impresor`(`Id_Impresor`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

-- ------------------------------------------------------------
-- Especilizacion del Cliente como Persona
-- ------------------------------------------------------------

CREATE TABLE `Persona` (
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`Nombre` VARCHAR(20) NULL,
`Materno` VARCHAR(20) NULL,
`Paterno` VARCHAR(20) NULL,
`Sexo` ENUM('M','F') NULL,
INDEX `Persona_FKIndex1`(`Id_Cliente`),
UNIQUE INDEX `Persona_index1663`(`Nombre`, `Materno`, `Paterno`),
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Impresora` (
`idImpresora` INTEGER(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Impresor` INTEGER(5) UNSIGNED NOT NULL,
`Descripcion` VARCHAR(50) NOT NULL,
`FechaActivacion` DATE NULL,
`ImpresoraActiva` BOOL NULL DEFAULT 'False',
`CostoBasicoDeImpresion` DECIMAL NULL,
`PrecioBasicoDeImpresion` DECIMAL NULL,
`DireccionIP` VARCHAR(15) NULL,
PRIMARY KEY(`idImpresora`),
INDEX `Impresora_FKIndex1`(`Id_Impresor`),
FOREIGN KEY(`Id_Impresor`)
REFERENCES `impresor`(`Id_Impresor`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Escuela` (
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`Nombre` VARCHAR(100) NOT NULL,
`Nivel` ENUM('Primaria','Secundaria','Preparatoria','Profesional') NULL,
INDEX `Escuela_FKIndex1`(`Id_Cliente`),
UNIQUE INDEX `Escuela_index1658`(`Nombre`),
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

-- ------------------------------------------------------------
-- Especializacion de cliente como empresa
-- ------------------------------------------------------------

CREATE TABLE `Empresa` (
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`RazonSocial` VARCHAR(100) NOT NULL,
`Giro` ENUM('Servicio','Comercio','Industria') NOT NULL,
INDEX `Empresa_FKIndex1`(`Id_Cliente`),
UNIQUE INDEX `Empresa_index1653`(`RazonSocial`),
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

-- ------------------------------------------------------------
-- Cuenta de Servicios
--
-- Cuando un cliente quiere imprimir en un centro de impresion tiene que ir al centro de impresion a pagar o solicitar credito por el servicio, la cuenta esta formada por un conjunto de transacciones entre el cliente y el centro de impresion
-- ------------------------------------------------------------

CREATE TABLE `Cuenta` (
`Id_Impresor` INTEGER(5) UNSIGNED NOT NULL,
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`SaldoInicial` DECIMAL NOT NULL DEFAULT '0',
`TotalAbono` DECIMAL NOT NULL DEFAULT '0',
`TotalCargo` DECIMAL NOT NULL DEFAULT '0',
`SaldoActual` DECIMAL NOT NULL DEFAULT '0',
`FechaApertura` DATE NOT NULL,
`Observaciones ` TEXT NULL,
PRIMARY KEY(`Id_Impresor`, `Id_Cliente`),
INDEX `Cuenta_FKIndex1`(`Id_Impresor`),
INDEX `Cuenta_FKIndex2`(`Id_Cliente`),
FOREIGN KEY(`Id_Impresor`)
REFERENCES `impresor`(`Id_Impresor`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Impresora_has_PropiedadesImpresora` (
`idImpresora` INTEGER(5) UNSIGNED NOT NULL,
`idPropiedadesImpresora` INTEGER(5) UNSIGNED ZEROFILL NOT NULL,
`PropiedadImpresionActiva` BOOL NULL,
`CostoPropiedadimpresion` DECIMAL NULL,
`PrecioPropiedadImpresion` DECIMAL NULL,
PRIMARY KEY(`idImpresora`, `idPropiedadesImpresora`),
INDEX `Impresora_has_PropiedadesImpresora_FKIndex1`(`idImpresora`),
INDEX `Impresora_has_PropiedadesImpresora_FKIndex2`(`idPropiedadesImpresora`),
FOREIGN KEY(`idImpresora`)
REFERENCES `Impresora`(`idImpresora`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`idPropiedadesImpresora`)
REFERENCES `PropiedadesImpresora`(`idPropiedadesImpresora`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `SolicitudDeImpresion` (
`NoSolicitud` INTEGER(6) UNSIGNED NOT NULL,
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`idServicios` INTEGER(6) UNSIGNED NOT NULL,
`idImpresora` INTEGER(5) UNSIGNED NOT NULL,
`FechaSolicitud` DATE NOT NULL,
`FechaEntrega` DATE NULL,
`Liberada` BOOL NULL DEFAULT 'False',
PRIMARY KEY(`NoSolicitud`),
INDEX `SolicitudDeImpresion_FKIndex3`(`idImpresora`),
INDEX `SolicitudDeImpresion_FKIndex3`(`idServicios`),
INDEX `SolicitudDeImpresion_FKIndex3`(`Id_Cliente`),
FOREIGN KEY(`idImpresora`)
REFERENCES `Impresora`(`idImpresora`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`idServicios`)
REFERENCES `Servicios`(`idServicios`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Cliente`)
REFERENCES `Cliente`(`Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `OrdenImpresion` (
`idOrdenImpresion` INTEGER(6) UNSIGNED NOT NULL AUTO_INCREMENT,
`NoSolicitud` INTEGER(6) UNSIGNED NOT NULL,
`FechaImpresion` DATE NULL,
`EstadoDeImpresion` ENUM('En Impresion','Impresa','Reimprimiendo','En Pausa','Cancelada') NULL DEFAULT 'En Impresion',
`ImpresionOK` BOOL NULL DEFAULT 'False',
`Observaciones` TEXT NULL,
PRIMARY KEY(`idOrdenImpresion`),
INDEX `OrdenImpresion_FKIndex1`(`NoSolicitud`),
FOREIGN KEY(`NoSolicitud`)
REFERENCES `SolicitudDeImpresion`(`NoSolicitud`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Documento` (
`idDocumento` INTEGER(6) UNSIGNED NOT NULL AUTO_INCREMENT,
`NoSolicitud` INTEGER(6) UNSIGNED NOT NULL,
`NombreDocumento` TEXT NULL,
`TipoDocumento` ENUM('TXT','DOC','XLS','PDF') NULL,
`Fecha` DATE NULL,
`SizeenKbytes` DECIMAL NULL,
PRIMARY KEY(`idDocumento`, `NoSolicitud`),
INDEX `Documento_FKIndex1`(`NoSolicitud`),
FOREIGN KEY(`NoSolicitud`)
REFERENCES `SolicitudDeImpresion`(`NoSolicitud`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE `Transaccion` (
`idTransaccion` INTEGER(6) UNSIGNED NOT NULL AUTO_INCREMENT,
`Id_Cliente` INTEGER(5) UNSIGNED NOT NULL,
`Id_Impresor` INTEGER(5) UNSIGNED NOT NULL,
`idTipoTransaccion` INTEGER(2) UNSIGNED NOT NULL,
`Fecha` DATE NOT NULL,
`Importe` DECIMAL NOT NULL,
`Descripcion` VARCHAR(50) NULL,
PRIMARY KEY(`idTransaccion`),
INDEX `Transaccion_FKIndex1`(`idTipoTransaccion`),
INDEX `Transaccion_FKIndex2`(`Id_Impresor`, `Id_Cliente`),
FOREIGN KEY(`idTipoTransaccion`)
REFERENCES `TipoTransaccion`(`idTipoTransaccion`)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY(`Id_Impresor`, `Id_Cliente`)
REFERENCES `Cuenta`(`Id_Impresor`, `Id_Cliente`)
ON DELETE CASCADE
ON UPDATE CASCADE
)
TYPE=InnoDB;

 
Re: Re: Re: errno:150 mysql
Enviado por Jose Manuel el día 1 de octubre de 2004

Tb recordad que las dos tablas debes del tipo InnoDB, sino tampoco funcionará.

 
Re: Re: Re: Re: errno:150 mysql
Enviado por guille el día 15 de abril de 2005

Hola, en mysql antes de crear alguna restriccion de foreign key tenes que crear un indice para ese foreign key, sino te va a seguir tirando ese error,
Saludos.

 
Re: Re: Re: Re: Re: errno:150 mysql
Enviado por silvana el día 17 de noviembre de 2005

Despu�s de consultar varios foros,
la �nica solucion que encontre fue crear una tabla nueva con la misma estructura, sin indices m�s que la PK, y sin FKs.
Copiar los datos de la tabla original a esta �ltima,
dropear la tabla original, crearla nuevamente con la FK modificada y traer los datos de la tabla copia. No es en un solo paso pero funciona.
Suerte.

 
Re: Re: Re: Re: Re: Re: errno:150 mysql
Enviado por aleister el día 16 de mayo de 2006

La solución que yo encontré fue crear las llaves foráneas y únicas con la sentencia alter.

 
Re: errno:150 mysql
Enviado por Cesar Alejandro el día 20 de mayo de 2006

La falla era que tocaba declarar la primaria con key (--) y luego si declarar la forania y .... y funciono..

 
Re: Re: errno:150 mysql
Enviado por Kloud el día 28 de mayo de 2006

No entiendo lo que quereis decir con crear un indice y despues la clave foranea....... A ver, la tabla que intento construir es simple:

CREATE TABLE scabd.secciones (
idSeccion INT NOT NULL,
nombreSeccion VARCHAR(20),
descSeccion VARCHAR(50),
encargadoSeccion VARCHAR(30),
PRIMARY KEY (idSeccion),
FOREIGN KEY (idSeccion) REFERENCES silos(idSeccion)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE=InnoDB;

tengo una tabla llamadas 'silos' que contiene 2 campos como clave principal. Uno de ellos es el campo idSeccion, y el otro idSilo. Ahora lo que quiero es tener una tabla con el idSeccion de la otra tabla, pero me da ese error.

Que tengo que hacer para insertar ese indice que comentais??

 
Re: Re: Re: errno:150 mysql
Enviado por jreynales el día 10 de junio de 2008

El origen del problema puede ser diferente en cada caso, para verificar la causa del error en la ultima sentencia SQL realizada, se puede usar el comando SHOW INNODB STATUS, el cual da mas detalles del error. Saludos a todos

 









Re: errno:150 mysql
Enviado por cqc el día 29 de mayo de 2006

Señores yo ando en algo como esto:
CREATE TABLE r_problemaxinforme(
codinfser INT NOT NULL,
cantidad INT NOT NULL,
codproblema INT NOT NULL,
codequipo INT NOT NULL,
numserie INT NOT NULL,
codir SMALLINT NOT NULL,
codcli INT DEFAULT 0 NOT NULL,
PRIMARY KEY (codinfser, codproblema, codequipo, numserie, codir, codcli),
CONSTRAINT Refr_lineainformes291 FOREIGN KEY (codinfser, codequipo, numserie, codir, codcli)
REFERENCES r_lineainformes(codinfser, codir, codequipo, numserie, codcli) ON DELETE CASCADE,
CONSTRAINT Refr_problema301 FOREIGN KEY (codproblema)
REFERENCES r_problema(codproblema)
)ENGINE=INNODB
;

ERROR 1005 (HY000): Can't creare table '.\db\r_problemaxinforme.frm' (errno: 150)

Es una tabla creada a partir de otras 2, que hereda su clave de otras 2, osea una entidad débil. Todas las tablas son INNODB, están indexadas. No se que puede estar pasando. Alguna idea? Gracias

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: juegos gratis | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | decoración web | gifs animados