2016-04-24 86 views
0

我不太確定爲什麼我從我的web服務器中的phpmyadmin錯誤150,當我在本地創建表工作正常,也許我失去了一些東西。錯誤150與外鍵的mysql創建表

這裏是我的代碼:

表USUARIOS

CREATE TABLE IF NOT EXISTS `usuarios` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'LLave primaria de la tabla' , 
`nombre` VARCHAR(100) NULL COMMENT 'Nombre completo del usuario' , 
`email` VARCHAR(75) NULL COMMENT 'Login del usuario' , 
`password` VARCHAR(45) NULL COMMENT 'Clave del usuario' , 
`fecha_registro` DATETIME NULL COMMENT 'Fecha en la que se registro el usuario' , 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 

表perfiles:

CREATE TABLE IF NOT EXISTS `perfiles` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'llave primaria de la tabla' , 
`nombre` VARCHAR(45) NULL COMMENT 'Descripción del perfil' , 
`fecha_registro` DATETIME NULL COMMENT 'fecha de registro' , 
PRIMARY KEY (`id`)) 
ENGINE = InnoDB; 

表usuarios_perfiles:

CREATE TABLE IF NOT EXISTS `usuarios_perfiles` (
`usuario_id` INT NOT NULL , 
`perfil_id` INT NOT NULL , 
INDEX `fk_usuarios_perfiles_usuarios_idx` (`usuario_id` ASC) , 
INDEX `fk_usuarios_perfiles_perfiles1_idx` (`perfil_id` ASC) , 
CONSTRAINT `fk_usuarios_perfiles_usuarios` 
FOREIGN KEY (`usuario_id`) 
REFERENCES `usuarios` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `fk_usuarios_perfiles_perfiles1` 
FOREIGN KEY (`perfil_id`) 
REFERENCES `perfiles` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

當我跑步時這些代碼在我的loc它的工作正常,但是當我想要從我的網絡服務器創建此phpmyadmin它發送錯誤105.

+0

這適用於我的本地服務器('使用readline 5.1'的mysql版本15.1 Distrib 10.0.23-MariaDB,對於Linux(x86_64))。你能分享你的確切錯誤的文字嗎? – Mureinik

+0

它給我這個:#1005 - 無法創建表'database.usuarios_perfiles'(errno:150) –

+0

也適用於sqlfiddle:http://sqlfiddle.com/#!2/617e19 –

回答

0

解決方案是添加ENGINE INNODB,當我創建usuarios表我沒有把最後行ENGINE = InnoDB;我正在獲得MyISAM。

看起來好像MyISAM不讓我使用fk。當我將ENGINE更改爲InnoDB時,一切都開始正常運行。

謝謝大家!