【问题标题】:Cannot create table due constraint由于约束无法创建表
【发布时间】:2012-01-20 23:50:29
【问题描述】:

我在我的项目上工作了几天,我坚持使用 phpmyadmin sql。 我在工作台 ERR 图中创建,如下所示:

粘贴到sql查询的代码是:

    SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS `nieruchomosci` ;
CREATE SCHEMA IF NOT EXISTS `nieruchomosci` DEFAULT CHARACTER SET utf8 ;
USE `nieruchomosci` ;

-- -----------------------------------------------------
-- Table `nieruchomosci`.`wojewodztwa`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `nieruchomosci`.`wojewodztwa` ;

CREATE  TABLE IF NOT EXISTS `nieruchomosci`.`wojewodztwa` (
  `id_wojewodztwa` INT NULL AUTO_INCREMENT ,
  `nazwa` VARCHAR(145) NULL ,
  PRIMARY KEY (`id_wojewodztwa`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `nieruchomosci`.`material`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `nieruchomosci`.`material` ;

CREATE  TABLE IF NOT EXISTS `nieruchomosci`.`material` (
  `id_material` INT NULL AUTO_INCREMENT ,
  `typ` VARCHAR(45) NULL ,
  PRIMARY KEY (`id_material`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `nieruchomosci`.`szczegoly`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `nieruchomosci`.`szczegoly` ;

CREATE  TABLE IF NOT EXISTS `nieruchomosci`.`szczegoly` (
  `id_szczegoly` INT NULL ,
  `typ_nabytku` VARCHAR(45) NULL ,
  `nr_budynku` INT NULL ,
  `nr_lokalu` INT NULL ,
  `pokoje` INT NULL ,
  `powierzchnia_mieszkania` INT NULL ,
  `powierzchnia_domu` INT NULL ,
  `stan_b` INT NULL ,
  `stan_l` INT NULL ,
  `winda` VARCHAR(45) NULL ,
  `garaz` VARCHAR(45) NULL ,
  `osiedle` VARCHAR(45) NULL ,
  `telefon` VARCHAR(45) NULL ,
  `internet` VARCHAR(45) NULL ,
  `tv` VARCHAR(45) NULL ,
  `domofon` VARCHAR(45) NULL ,
  `tereny` VARCHAR(45) NULL ,
  `plac_zabaw` VARCHAR(45) NULL ,
  `sport` VARCHAR(45) NULL ,
  `kino` VARCHAR(45) NULL ,
  `basen` VARCHAR(45) NULL ,
  PRIMARY KEY (`id_szczegoly`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `nieruchomosci`.`ogloszenie`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `nieruchomosci`.`ogloszenie` ;

CREATE  TABLE IF NOT EXISTS `nieruchomosci`.`ogloszenie` (
  `id_ogloszenie` INT NULL AUTO_INCREMENT ,
  `rok` INT NULL ,
  `pietro` INT NULL ,
  `ile_pieter` INT NULL ,
  `cena` INT NULL ,
  `typ_oferty` INT NULL ,
  `id_adres` INT NULL ,
  `id_material` INT NULL ,
  PRIMARY KEY (`id_ogloszenie`) ,
  INDEX `fk_ogloszenie_material1` (`id_material` ASC) ,
  CONSTRAINT `fk_ogloszenie_material1`
    FOREIGN KEY (`id_material` )
    REFERENCES `nieruchomosci`.`material` (`id_material` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_ogloszenie_szczegoly1`
    FOREIGN KEY (`id_ogloszenie` )
    REFERENCES `nieruchomosci`.`szczegoly` (`id_szczegoly` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `nieruchomosci`.`adres`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `nieruchomosci`.`adres` ;

CREATE  TABLE IF NOT EXISTS `nieruchomosci`.`adres` (
  `id_adres` INT NULL AUTO_INCREMENT ,
  `ulica` VARCHAR(45) NULL ,
  `miasto` VARCHAR(45) NULL ,
  `powiat` VARCHAR(45) NULL ,
  `id_wojewodztwa` INT NULL ,
  PRIMARY KEY (`id_adres`) ,
  INDEX `fk_adres_wojewodztwa` (`id_wojewodztwa` ASC) ,
  CONSTRAINT `fk_adres_wojewodztwa`
    FOREIGN KEY (`id_wojewodztwa` )
    REFERENCES `nieruchomosci`.`wojewodztwa` (`id_wojewodztwa` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_adres_ogloszenie1`
    FOREIGN KEY (`id_adres` )
    REFERENCES `nieruchomosci`.`ogloszenie` (`id_adres` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

地址表示地址
Ogloszenie 的意思是广告
Wojewodztwa 的意思是省
材料意味着材料
Szczegoly 的意思是详细信息

这个简单的项目是关于出售房屋的广告。 我的错误是

Executing SQL script in server

ERROR: Error 1005: Can't create table 'nieruchomosci.adres' (errno: 150)

我在sql中完全是黄色的,我在哪里做错了?

【问题讨论】:

    标签: sql phpmyadmin


    【解决方案1】:

    我认为您在错误的位置引用了外键。 而不是在adres的定义中包含以下内容

    CONSTRAINT `fk_adres_ogloszenie1`
    FOREIGN KEY (`id_adres` )
    REFERENCES `nieruchomosci`.`ogloszenie` (`id_adres` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
    

    你应该把它放在ogloszenie表的定义中。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多