2016-04-24 89 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时,一切都开始正常运行。

谢谢大家!