【问题标题】:MySQL 5.1 #1005 - Can't create table 'datacode.foto' (errno: 150) errorMySQL 5.1 #1005 - 无法创建表 'datacode.foto' (errno: 150) 错误
【发布时间】:2012-12-02 21:40:00
【问题描述】:

我在 phpMyadmin,MySQL 5.1 版本,我试图在下面运行这个 SQL,但是当我在 phpmyadin 上执行这个代码时,它给出了错误 Can't create table 'datacode.foto' (errno : 150),有人知道我的代码发生了什么吗?

CREATE  TABLE IF NOT EXISTS `projeto` (
`proj_id` INT NOT NULL AUTO_INCREMENT ,
  `proj_nome` VARCHAR(40) NULL ,
  `proje_descr` VARCHAR(700) NULL ,
  `proj_oque_fizemos` VARCHAR(200) NULL ,
  `proj_url` VARCHAR(250) NULL ,
  `proj_descr_url` VARCHAR(250) NULL ,
  PRIMARY KEY (`proj_id`) )
ENGINE = InnoDB;



CREATE  TABLE IF NOT EXISTS `categoria` (
  `cat_id` INT NOT NULL AUTO_INCREMENT ,
  `cat_nome` VARCHAR(45) NULL ,
  PRIMARY KEY (`cat_id`) )
ENGINE = InnoDB;



CREATE  TABLE IF NOT EXISTS `foto` (
  `foto_id` INT NOT NULL AUTO_INCREMENT ,
  `foto_url` VARCHAR(270) NULL ,
  `projeto_proj_id` INT NOT NULL ,
  PRIMARY KEY (`foto_id`) ,
  INDEX `fk_foto_projeto1_idx` (`projeto_proj_id` ASC) ,
  CONSTRAINT `fk_foto_projeto1`
    FOREIGN KEY (`projeto_proj_id` )
    REFERENCES `mydb`.`projeto` (`proj_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

CREATE  TABLE IF NOT EXISTS `projeto_por_categoria` (
  `projeto_proj_id` INT NOT NULL ,
  `categoria_cat_id` INT NOT NULL ,
  PRIMARY KEY (`projeto_proj_id`, `categoria_cat_id`) ,
  INDEX `fk_projeto_has_categoria_categoria1_idx` (`categoria_cat_id` ASC) ,
  INDEX `fk_projeto_has_categoria_projeto_idx` (`projeto_proj_id` ASC) ,
  CONSTRAINT `fk_projeto_has_categoria_projeto`
    FOREIGN KEY (`projeto_proj_id` )
    REFERENCES `mydb`.`projeto` (`proj_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_projeto_has_categoria_categoria1`
    FOREIGN KEY (`categoria_cat_id` )
    REFERENCES `mydb`.`categoria` (`cat_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

【问题讨论】:

  • 表 projeto_por_categoria 出现同样的错误...
  • 当我尝试单独运行时
  • 您在其中创建这些表的数据库实际上是否命名为mydb

标签: mysql sql phpmyadmin


【解决方案1】:

您引用的是 mydb 数据库中的一个表,而您的表实际上是在一个名为 datacode 的数据库中:

REFERENCES `mydb`.`projeto` (`proj_id` )
           ^^^^^^^--- change (or remove) this database qualifier

【讨论】:

    【解决方案2】:

    由于这些行,您会收到此错误:

    REFERENCES `mydb`.`projeto` (`proj_id` )
    
    REFERENCES `mydb`.`categoria` (`cat_id` )
    

    如果你用它替换它们应该可以工作

    REFERENCES `projeto` (`proj_id` )
    
    REFERENCES `categoria` (`cat_id` )
    

    这里是构建:http://sqlfiddle.com/#!8/751c2

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 1970-01-01
      • 2017-04-09
      • 2016-10-12
      • 1970-01-01
      • 2011-02-17
      • 2013-08-17
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多