Невозможно создать таблицу из-за ограничений - PullRequest
2 голосов
/ 21 января 2012

Я несколько дней работаю над своим проектом и застрял на phpmyadmin sql.Я создаю в рабочей среде ERR-диаграмму, которая выглядит следующим образом: 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;

Адрес означает адрес
Оглозение означает Реклама
Wojewodztwa означает Провинция
Материал означает Материал
Щеголи означает Детали

Этот простой проект о рекламе, которая продает дома.Моя ошибка

Executing SQL script in server

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

Я полностью желтый в sql, где я сделал ошибку?

1 Ответ

1 голос
/ 21 января 2012

Я думаю, что вы ссылаетесь на внешний ключ в неправильной позиции.Вместо определения следующего в определении adres

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

Вы должны поместить это в определение таблицы ogloszenie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...