внешние ключи mysql - PullRequest
       3

внешние ключи mysql

0 голосов
/ 27 июля 2011

Здравствуйте, у меня есть две таблицы mysql, одна из которых содержит имя пользователя и пароль, а вторая содержит информацию о пользователе. Вот таблицы:

CREATE  TABLE IF NOT EXISTS `test`.`dbo.users` (
  `userId` INT(11) NOT NULL AUTO_INCREMENT ,
  `userUsername` VARCHAR(45) NULL ,
  `userPassword` VARCHAR(45) NULL ,
  `dbo.userProfiles_userProfileId` INT(11) NOT NULL ,
  PRIMARY KEY (`userId`, `dbo.userProfiles_userProfileId`) ,
  INDEX `fk_dbo.users_dbo.userProfiles` (`dbo.userProfiles_userProfileId` ASC) ,
  CONSTRAINT `fk_dbo.users_dbo.userProfiles`
    FOREIGN KEY (`dbo.userProfiles_userProfileId` )
    REFERENCES `test`.`dbo.userProfiles` (`userId` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

CREATE  TABLE IF NOT EXISTS `test`.`dbo.userProfiles` (
  `userProfileId` INT(11) NOT NULL AUTO_INCREMENT ,
  `userId` INT(11) NOT NULL ,
  `userFirstName` VARCHAR(45) NULL ,
  `userMidleName` VARCHAR(45) NULL ,
  `userLastName` VARCHAR(45) NULL ,
  `userBirthDate` VARCHAR(45) NULL ,
  `userCountry` VARCHAR(45) NULL ,
  `userState` VARCHAR(45) NULL ,
  `userCity` VARCHAR(45) NULL ,
  `userZipCode` VARCHAR(45) NULL ,
  `userPrimaryAddress` VARCHAR(45) NULL ,
  `userSecondaryAddress` VARCHAR(45) NULL ,
  `userThirdAddress` VARCHAR(45) NULL ,
  `userFirstPhone` VARCHAR(45) NULL ,
  `userSecondaryPhone` VARCHAR(45) NULL ,
  `userThirdPhone` VARCHAR(45) NULL ,
  `userFirstEmail` VARCHAR(45) NULL ,
  `userSecondaryEmail` VARCHAR(45) NULL ,
  `userThirdEmail` VARCHAR(45) NULL ,
  `userDescription` VARCHAR(45) NULL ,
  PRIMARY KEY (`userProfileId`, `userId`) )
ENGINE = InnoDB;

Моя проблема с этими таблицами в том, что клавиша fk не работает, и я не уверен, почему я что-то здесь упускаю .. (Я не слишком часто использовал внешние ключи).

Ошибка:

Выполнение сценария SQL на сервере

ОШИБКА: Ошибка 1005: Невозможно создать таблицу 'test.dbo.users' (номер ошибки: 150)

Не могли бы вы помочь исправить это, чтобы я мог использовать fk для этих таблиц и других? и если у вас есть немного свободного времени, чтобы объяснить мне, как именно работают ключи fk (используя инструментальные средства mysql для их создания на диаграмме, то обратитесь к инженеру). спасибо за вашу помощь

1 Ответ

1 голос
/ 27 июля 2011

Сначала необходимо создать корневые таблицы (userProfiles).Вы можете временно обойти это ограничение, отключив проверку внешних ключей с помощью set foreign_key_checks=0.Это необходимо сделать, если вы создаете несколько таблиц с круговыми ссылками.

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