【问题标题】:error 150 creating table with mysql with foreign keys错误 150 使用带有外键的 mysql 创建表
【发布时间】:2016-08-18 02:00:06
【问题描述】:

我不太确定为什么我的网络服务器中的 phpmyadmin 收到错误 150,当我在本地创建表时它工作正常,也许我遗漏了一些东西。

这是我的代码:

餐桌用料

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;

当我在本地服务器上运行所有这些代码时,它工作正常,但是当我想从我的网络服务器在 phpmyadmin 中创建它时,它会发送错误 105。

【问题讨论】:

  • 这在我的本地服务器 (mysql Ver 15.1 Distrib 10.0.23-MariaDB, for Linux (x86_64) using readline 5.1) 上运行良好。你能分享你的确切错误文本吗?
  • 它发给我这个:#1005 - 无法创建表 'database.usuarios_perfiles' (errno: 150)
  • 也适用于 sqlfiddle:sqlfiddle.com/#!2/617e19
  • 运行 show engine innodb status 并查看任何喷出的错误
  • 当我创建 usuarios 表时,我没有放最后一行 ENGINE = InnoDB;我得到了 MyISAM ENGINE,我只是将其更改为 ENGINE INNODB,现在一切正常......谢谢大家

标签: mysql phpmyadmin foreign-keys mysql-error-150


【解决方案1】:

解决方案是添加 ENGINE INNODB,当我创建 usuarios 表时,我没有放最后一行 ENGINE = InnoDB;我得到了 MyISAM。

似乎 MyISAM 不允许我使用 fk。当我将 ENGINE 更改为 InnoDB 时,一切都开始正常运行。

谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多