Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание БД, Ошибка 150 
V
    Опции темы
Neox_GeForce
Дата 31.8.2010, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



Создаю БД. Но при создании таблицы Product выкидывает ошибку.
"Can not create table"
Вот мой 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 `mydb` ;
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Contragent`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Contragent` (
  `id_Contragent` INT(11) NOT NULL AUTO_INCREMENT ,
  `full_name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `address` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `city` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `phone` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  PRIMARY KEY (`id_Contragent`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Warehouse`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Warehouse` (
  `id_Warehouse` INT(11) NOT NULL AUTO_INCREMENT ,
  `name_warehouse` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `address_warehouse` VARCHAR(450) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `city_warehouse` VARCHAR(100) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  `phone_warehouse` VARCHAR(15) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  PRIMARY KEY (`id_Warehouse`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Document_head`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Document_head` (
  `id_Document_head` INT(11) NOT NULL AUTO_INCREMENT ,
  `total_count` DOUBLE NOT NULL ,
  `status` INT(11) NOT NULL ,
  PRIMARY KEY (`id_Document_head`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Journal`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Journal` (
  `id_Journal` INT(11) NOT NULL AUTO_INCREMENT ,
  `id_part` INT(11) NOT NULL ,
  `id_document` INT(11) NULL ,
  `date_document` DATETIME NOT NULL ,
  `type_document` INT(11) NOT NULL ,
  `from_warehouse` INT(11) NULL ,
  `to_warehouse` INT(11) NULL ,
  `from_contragent` INT(11) NULL ,
  `to_contragent` INT(11) NULL ,
  `count` DOUBLE NOT NULL ,
  `summa` DOUBLE NOT NULL ,
  PRIMARY KEY USING BTREE (`id_Journal`) ,
  INDEX `fk_Journal_1` (`from_contragent` ASC, `to_contragent` ASC) ,
  INDEX `fk_Journal_2` (`from_warehouse` ASC, `to_warehouse` ASC) ,
  INDEX `fk_Journal_3` (`id_document` ASC) ,
  CONSTRAINT `fk_Journal_1`
    FOREIGN KEY (`from_contragent`  )
    REFERENCES `mydb`.`Contragent` (`id_Contragent`  )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Journal_1_1`
    FOREIGN KEY ( `to_contragent` )
    REFERENCES `mydb`.`Contragent` (`id_Contragent` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Journal_2`
    FOREIGN KEY (`from_warehouse` )
    REFERENCES `mydb`.`Warehouse` (`id_Warehouse`  )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
CONSTRAINT `fk_Journal_2_1`
    FOREIGN KEY (`to_warehouse` )
    REFERENCES `mydb`.`Warehouse` (`id_Warehouse` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Journal_3`
    FOREIGN KEY (`id_document` )
    REFERENCES `mydb`.`Document_head` (`id_Document_head` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`BindExpenseInvoice`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`BindExpenseInvoice` (
  `id_BindExpenseInvoice` INT(11) NOT NULL AUTO_INCREMENT ,
  `id_expense_journal` INT(11) NOT NULL ,
  `id_invoice_journal` INT(11) NOT NULL ,
  `count` DOUBLE NOT NULL ,
  PRIMARY KEY (`id_BindExpenseInvoice`) ,
  INDEX `fk_BindExpenseInvoice_1` (`id_expense_journal` ASC, `id_invoice_journal` ASC) ,
  CONSTRAINT `fk_BindExpenseInvoice_1`
    FOREIGN KEY (`id_expense_journal`  )
    REFERENCES `mydb`.`Journal` (`id_Journal`  )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
CONSTRAINT `fk_BindExpenseInvoice_1_1`
    FOREIGN KEY (`id_invoice_journal` )
    REFERENCES `mydb`.`Journal` (`id_Journal` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Measure`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Measure` (
  `id_Measure` INT(11) NOT NULL AUTO_INCREMENT ,
  `full_name` VARCHAR(45)  NOT NULL ,
  `abbr_name` VARCHAR(10)  NOT NULL ,
  PRIMARY KEY (`id_Measure`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`GroupProduct`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`GroupProduct` (
  `id_Group_Product` INT(11) NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  PRIMARY KEY (`id_Group_Product`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`SubGroup`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`SubGroup` (
  `id_SubGroup` INT(11) NOT NULL AUTO_INCREMENT ,
  `id_group` INT(11) NULL ,
  `name` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
  PRIMARY KEY (`id_SubGroup`) ,
  INDEX `fk_SubGroup_1` (`id_group` ASC) ,
  CONSTRAINT `fk_SubGroup_1`
    FOREIGN KEY (`id_group` )
    REFERENCES `mydb`.`GroupProduct` (`id_Group_Product` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

-- -----------------------------------------------------
-- Table `mydb`.`Product`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Product` (
  `id_product` INT(11) NOT NULL AUTO_INCREMENT ,
  `name_product` VARCHAR(100)  NOT NULL ,
  `sybgroup_product` INT(11) NULL ,
  `description` VARCHAR(2000)  NOT NULL ,
  `measure` INT(11) NOT NULL ,
  PRIMARY KEY (`id_product`) ,
  INDEX `fk_Product_1` (`measure` ASC) ,
  INDEX `fk_Product_2` (`sybgroup_product` ASC) ,
  CONSTRAINT `fk_Product_1`
    FOREIGN KEY (`measure` )
    REFERENCES `mydb`.`Measure` (`id_Measure` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Product_2`
    FOREIGN KEY (`sybgroup_product` )
    REFERENCES `mydb`.`SubGroup` (`id_SubGroup` )
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Price`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Price` (
  `id_Price` INT(11) NOT NULL AUTO_INCREMENT ,
  `date_price` DATETIME NOT NULL ,
  `product` INT(11) NOT NULL ,
  `invoice_price_rozn` DOUBLE NOT NULL ,
  `expense_price_rozn` DOUBLE NOT NULL ,
  `invoice_optom` DOUBLE NOT NULL ,
  `expense_optom` DOUBLE NOT NULL ,
  PRIMARY KEY (`id_Price`) ,
  INDEX `fk_Price_1` (`product` ASC) ,
  CONSTRAINT `fk_Price_1`
    FOREIGN KEY (`product` )
    REFERENCES `mydb`.`Product` (`id_product` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Document`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Document` (
  `id_Document` INT(11) NOT NULL AUTO_INCREMENT ,
  `id_Document_head` INT(11) NOT NULL ,
  `id_product` INT(11) NOT NULL ,
  `id_price` INT(11) NULL ,
  `count` DOUBLE NOT NULL ,
  INDEX `fk_Document_1` (`id_Document_head` ASC) ,
  INDEX `fk_Document_2` (`id_price` ASC) ,
  PRIMARY KEY (`id_Document`) ,
  INDEX `fk_Document_3` (`id_product` ASC) ,
  CONSTRAINT `fk_Document_1`
    FOREIGN KEY (`id_Document_head` )
    REFERENCES `mydb`.`Document_head` (`id_Document_head` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Document_2`
    FOREIGN KEY (`id_price` )
    REFERENCES `mydb`.`Price` (`id_Price` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Document_3`
    FOREIGN KEY (`id_product` )
    REFERENCES `mydb`.`Product` (`id_product` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;



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




--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
Akina
Дата 31.8.2010, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата

If MySQL reports an error number 1005 from a CREATE TABLE statement, and the error message refers to errno 150, table creation failed because a foreign key constraint was not correctly formed.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Neox_GeForce
Дата 31.8.2010, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



Но я правильно задал связь
Код

CONSTRAINT `fk_Product_1`
    FOREIGN KEY (`measure` )
    REFERENCES `mydb`.`Measure` (`id_Measure` )
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_Product_2`
    FOREIGN KEY (`sybgroup_product` )
    REFERENCES `mydb`.`SubGroup` (`id_SubGroup` )
    ON DELETE SET NULL
    ON UPDATE CASCADE

measure -  id_Measure  - один тип, один размер
 sybgroup_product - id_SubGroup - так-же


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
Akina
Дата 31.8.2010, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Убери оба ограничения - таблица создаётся? просто обязана.
Введи одно ограничение - создаётся? нет - вылизывай его...
Потом так же вылизывай второе ограничение.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Neox_GeForce
Дата 31.8.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



Вообщем нашел ошибку
Нужно было использовать 
Код

ON UPDATE CASCADE
ON DELETE CASCADE

a не 
Код

ON UPDATE SET NULL
ON DELETE CASCADE



--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.