无法创建表格到期约束

时间:2012-01-20 23:50:29

标签: sql phpmyadmin

我正在与我的项目工作几天,我坚持使用phpmyadmin sql。 我在工作台中创建ERR Diagram,它看起来像: enter image description here

要粘贴到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;

Adres表示地址
Ogloszenie意为广告人 Wojewodztwa的意思是省 材料是指材料
Szczegoly意为细节

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

Executing SQL script in server

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

我在sql中总是黄色,我在哪里弄错了?

1 个答案:

答案 0 :(得分:1)

我认为您在错误的位置引用了外键。 而不是在adres

的定义中具有以下内容
CONSTRAINT `fk_adres_ogloszenie1`
FOREIGN KEY (`id_adres` )
REFERENCES `nieruchomosci`.`ogloszenie` (`id_adres` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)

您应该将其放在ogloszenie表的定义中。

希望有所帮助。