Description:
Hello,
Workbench gives met the following script:
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';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb`;
-- -----------------------------------------------------
-- Table `mydb`.`country`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`country` (
`idcountry` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT ,
`country` VARCHAR(45) CHARACTER SET 'latin1' NOT NULL ,
PRIMARY KEY (`idcountry`) )
ENGINE = InnoDB
AUTO_INCREMENT = 142
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
-- -----------------------------------------------------
-- Table `mydb`.`language`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`language` (
`idlanguage` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT ,
`language` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
PRIMARY KEY (`idlanguage`) )
ENGINE = InnoDB
AUTO_INCREMENT = 32
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
-- -----------------------------------------------------
-- Table `mydb`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`user` (
`iduser` MEDIUMINT(5) UNSIGNED NOT NULL AUTO_INCREMENT ,
`first_name` VARCHAR(45) NOT NULL ,
`last_name` VARCHAR(45) NOT NULL ,
`user_name` VARCHAR(10) NOT NULL ,
`password` VARCHAR(20) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`gender` VARCHAR(10) NULL DEFAULT NULL ,
`birth_year` SMALLINT(4) UNSIGNED NULL DEFAULT NULL ,
`account_activated` VARCHAR(4) NOT NULL DEFAULT 'no' ,
`date_registered` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`iduser`) )
ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARACTER SET = latin1
COMMENT = 'Table containing data of the registered users';
-- -----------------------------------------------------
-- Table `mydb`.`link_usr_ctry`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`link_usr_ctry` (
`idlink_usr_ctry` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT ,
`iduser` MEDIUMINT(5) UNSIGNED NOT NULL ,
`idcountry` TINYINT(3) UNSIGNED NOT NULL ,
PRIMARY KEY (`idlink_usr_ctry`) ,
INDEX iduser (`iduser` ASC) ,
INDEX idcountry (`idcountry` ASC) ,
CONSTRAINT `iduser`
FOREIGN KEY (`iduser` )
REFERENCES `mydb`.`user` (`iduser` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `idcountry`
FOREIGN KEY (`idcountry` )
REFERENCES `mydb`.`country` (`idcountry` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = latin1;
When I import through phpMyAdmin I get the following error:
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';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb`;
-- -----------------------------------------------------
-- Table `mydb`.`country`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`country` (
`idcountry` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT ,
`country` VARCHAR(45) CHARACTER SET 'latin1' NOT NULL ,
PRIMARY KEY (`idcountry`) )
ENGINE = InnoDB
AUTO_INCREMENT = 142
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
-- -----------------------------------------------------
-- Table `mydb`.`language`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`language` (
`idlanguage` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT ,
`language` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_bin' NOT NULL ,
PRIMARY KEY (`idlanguage`) )
ENGINE = InnoDB
AUTO_INCREMENT = 32
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
-- -----------------------------------------------------
-- Table `mydb`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`user` (
`iduser` MEDIUMINT(5) UNSIGNED NOT NULL AUTO_INCREMENT ,
`first_name` VARCHAR(45) NOT NULL ,
`last_name` VARCHAR(45) NOT NULL ,
`user_name` VARCHAR(10) NOT NULL ,
`password` VARCHAR(20) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`gender` VARCHAR(10) NULL DEFAULT NULL ,
`birth_year` SMALLINT(4) UNSIGNED NULL DEFAULT NULL ,
`account_activated` VARCHAR(4) NOT NULL DEFAULT 'no' ,
`date_registered` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`iduser`) )
ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARACTER SET = latin1
COMMENT = 'Table containing data of the registered users';
-- -----------------------------------------------------
-- Table `mydb`.`link_usr_ctry`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`link_usr_ctry` (
`idlink_usr_ctry` MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT ,
`iduser` MEDIUMINT(5) UNSIGNED NOT NULL ,
`idcountry` TINYINT(3) UNSIGNED NOT NULL ,
PRIMARY KEY (`idlink_usr_ctry`) ,
INDEX iduser (`iduser` ASC) ,
INDEX idcountry (`idcountry` ASC) ,
CONSTRAINT `iduser`
FOREIGN KEY (`iduser` )
REFERENCES `mydb`.`user` (`iduser` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `idcountry`
FOREIGN KEY (`idcountry` )
REFERENCES `mydb`.`country` (`idcountry` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = latin1;
All but one table are generated ; when I take the foreign key relationships out, the tables are properly imported.
version information:
localhost:
* Server version: 5.0.45-community-nt
* Protocol version: 10
phpMyAdmin - 2.10.1
* MySQL client version: 5.0.45
* Used PHP extensions: mysqli
How to repeat:
this is fairly consistent once you've set up one parent-child relationship and then try to set up a second one.
Suggested fix:
Set all the foreign key relationships up in phpMyAdmin instead of Workbench