Cannot create table due constraint - sql

I am working few days with my project and I stuck on phpmyadmin sql.
I create in workbench ERR Diagram which looks like:
And the code to paste into sql query is:
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 means Address
Ogloszenie means Advertistment
Wojewodztwa means Province
Material means Material
Szczegoly means Details
This simple project is about advertistment which sells houses.
My error is
Executing SQL script in server
ERROR: Error 1005: Can't create table 'nieruchomosci.adres' (errno: 150)
I am total yellow in sql, where did I make mistake?

I think you reference the foreign key at the wrong position.
Instead of having the following in the definition of adres
CONSTRAINT `fk_adres_ogloszenie1`
FOREIGN KEY (`id_adres` )
REFERENCES `nieruchomosci`.`ogloszenie` (`id_adres` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
You should put this in the definition of the ogloszenie table.
Hope that helps.

Related

Derby and SQL from Workbench

I've a project at school and i must use a Derby DB.
I'm using eclipse and the SQL Scrapbook to execute my SQL script.
Here is the problem:
My SQL script was generated by Mysql Workbench, we did a schemas and then exported it to a .sql
When i try to execute it in the SQL Scrapbook, I have MANY errors, the sql seems not to be adapted to derby (for example, AUTOINCREMENT is now (START WITH 1, INCREMENT BY 1).
Here is my .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 latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`User`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`User` ;
CREATE TABLE IF NOT EXISTS `mydb`.`User` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NOT NULL ,
`lastname` VARCHAR(45) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`adress` VARCHAR(45) NOT NULL ,
`city` VARCHAR(45) NOT NULL ,
`zip` VARCHAR(45) NOT NULL ,
`login` VARCHAR(45) NOT NULL ,
`password` VARCHAR(45) NOT NULL ,
`admin` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;
-- -----------------------------------------------------
-- Table `mydb`.`Movie`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Movie` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Movie` (
`id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(45) NOT NULL ,
`resume` VARCHAR(500) NULL ,
`genre` VARCHAR(60) NULL ,
`grade` INT(11) NULL ,
`review_pub` VARCHAR(200) NULL ,
`review_gen` VARCHAR(200) NULL ,
`poster` VARCHAR(100) NULL ,
`duration` INT(11) NULL ,
`release_date` VARCHAR(45) NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Projection`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Projection` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Projection` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT ' ' ,
`date` DATE NULL ,
`length` INT(11) NULL ,
`Movie_id` INT NOT NULL ,
`price` DECIMAL(10,0) NULL ,
`location` VARCHAR(45) NOT NULL ,
`place_nbr` INT(11) NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_Projection_Movie` (`Movie_id` ASC) ,
CONSTRAINT `fk_Projection_Movie`
FOREIGN KEY (`Movie_id` )
REFERENCES `mydb`.`Movie` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`command`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`command` ;
CREATE TABLE IF NOT EXISTS `mydb`.`command` (
`id` INT NOT NULL AUTO_INCREMENT ,
`Projection_id` INT NOT NULL ,
`User_id` INT NOT NULL ,
`paid` TINYINT(1) NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_command_Projection1` (`Projection_id` ASC) ,
INDEX `fk_command_User1` (`User_id` ASC) ,
CONSTRAINT `fk_command_Projection1`
FOREIGN KEY (`Projection_id` )
REFERENCES `mydb`.`Projection` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_command_User1`
FOREIGN KEY (`User_id` )
REFERENCES `mydb`.`User` (`id` )
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;
Thank you
Try using DdlUtils (http://db.apache.org/ddlutils/) to export your schema from your MySQL database, then you can import that same schema to Derby.

Unitils doesn't work

I have a big problem
my unitils.properties:
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost/timesheet_test
database.userName=root
database.password=
database.schemaNames=timesheet_test
database.dialect=mysql
updateDataBaseSchema.enabled=true
dbMaintainer.script.locations=src/test/resources/dbscripts
dataSetStructureGenerator.xsd.dirName=target/xsd
dbMaintainer.autoCreateExecutedScriptsTable=true
dbMaintainer.disableConstraints.enabled=false
## Módulos do unitils
unitils.module.database.enabled=true
unitils.module.dbunit.enabled=true
unitils.module.hibernate.enabled=true
unitils.module.spring.enabled=true
unitils.module.mock.enabled=false
unitils.module.easymock.enabled=false
unitils.module.inject.enabled=false
unitils.module.jpa.enabled=false
DatabaseModule.Transactional.value.default=rollback
my database.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,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `timesheet_test` DEFAULT CHARACTER SET latin1 ;
USE `timesheet_test` ;
-- -----------------------------------------------------
-- Table `timesheet_test`.`DATA`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `timesheet_test`.`DATA` (
`ID_DATA` BIGINT(20) NOT NULL AUTO_INCREMENT ,
`DATA` DATETIME NOT NULL ,
PRIMARY KEY (`ID_DATA`) ,
UNIQUE INDEX `data_UNIQUE` (`DATA` ASC) ,
UNIQUE INDEX `ID_DIAS_UNIQUE` (`ID_DATA` ASC) )
ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `timesheet_test`.`USUARIO`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `timesheet_test`.`USUARIO` (
`ID_USUARIO` BIGINT(20) NOT NULL AUTO_INCREMENT ,
`E_MAIL` VARCHAR(100) NOT NULL ,
`SENHA` VARCHAR(10) NOT NULL ,
`NOME` VARCHAR(100) NULL DEFAULT NULL ,
PRIMARY KEY (`ID_USUARIO`) ,
UNIQUE INDEX `E_MAIL_UNIQUE` (`E_MAIL` ASC) ,
UNIQUE INDEX `ID_USUARIO_UNIQUE` (`ID_USUARIO` ASC) )
ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `timesheet_test`.`TIME_SHEET`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `timesheet_test`.`TIME_SHEET` (
`ID_TIME_SHEET` BIGINT(20) NOT NULL AUTO_INCREMENT ,
`INICIO` VARCHAR(8) NOT NULL ,
`FIM` VARCHAR(8) NOT NULL ,
`LONGITUDE` DOUBLE NULL DEFAULT NULL ,
`LATITUDE` DOUBLE NULL DEFAULT NULL ,
`OBSERVACAO` VARCHAR(200) NULL DEFAULT NULL ,
`ID_DATA` BIGINT(20) NOT NULL ,
`ID_USUARIO` BIGINT(20) NOT NULL ,
PRIMARY KEY (`ID_TIME_SHEET`) ,
UNIQUE INDEX `ID_TIME_SHEET_UNIQUE` (`ID_TIME_SHEET` ASC) ,
INDEX `FK9735054D39B29F66` (`ID_DATA` ASC) ,
INDEX `FK9735054D9DA5550A` (`ID_USUARIO` ASC) ,
CONSTRAINT `FK9735054D9DA5550A`
FOREIGN KEY (`ID_USUARIO` )
REFERENCES `timesheet_test`.`USUARIO` (`ID_USUARIO` ),
CONSTRAINT `FK9735054D39B29F66`
FOREIGN KEY (`ID_DATA` )
REFERENCES `timesheet_test`.`DATA` (`ID_DATA` ))
ENGINE = InnoDB
AUTO_INCREMENT = 1000
DEFAULT CHARACTER SET = latin1;
USE `timesheet_test` ;
SET SQL_MODE=#OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=#OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=#OLD_UNIQUE_CHECKS;
I have 65 tests and I have problem with 6 and the same error:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`timesheet_test`.`time_sheet`, CONSTRAINT `FK9735054D39B29F66` FOREIGN KEY (`ID_DATA`) REFERENCES `DATA` (`ID_DATA`))
My test is "search" not "delete" but I think when unitils trying delete row to start new test, have problem.
anybody have idea ?
thanks
Solution can be found on: https://sourceforge.net/p/unitils/discussion/570578/thread/38fe5abc/
During a clean-insert, data is first deleted from all tables in reverse order as specified in the data set. After that, the data is inserted in the specified order.
So for your data set
<TIME_SHEET />
<DATA />
<USUARIO />
it first deletes all records in usuario then data and then time_sheet
since there appears to be FK from time_sheet to data (see exception), it cannot delete the data records before deleting the dependent time_sheet records
Solution: just correct the order in the data set (put data before time sheet)
<DATA />
<TIME_SHEET />
<USUARIO />

How can I insert a new column after x on a table?

I have a table called users:
CREATE TABLE `users` (
`UID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(45) NOT NULL ,
`password` VARCHAR(200) NOT NULL ,
`name` VARCHAR(45) NOT NULL ,
`email` VARCHAR(255) NOT NULL ,
`phone` VARCHAR(30) NOT NULL ,
`logo` VARCHAR(255) NULL ,
`address` VARCHAR(100) NULL ,
`information` TEXT NULL ,
`announcement` TEXT NULL ,
`role` INT UNSIGNED NULL ,
`yahoo` VARCHAR(100) NULL ,
`twitter` VARCHAR(20) NULL ,
`timelogin` DATETIME NULL,
PRIMARY KEY (`UID`) ,
UNIQUE INDEX `UID_UNIQUE` (`UID` ASC) ,
UNIQUE INDEX `name_UNIQUE` (`name` ASC) ,
UNIQUE INDEX `logo_UNIQUE` (`logo` ASC) ,
UNIQUE INDEX `username_UNIQUE` (`username` ASC))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;
the problem is that I want to add or insert a new row like
`image_seal` VARCHAR(255) NULL ,
after logo, can we do something like that in mysql ? append-thing?
Thanks
Adam Ramadhan
ALTER TABLE users ADD COLUMN image_seal VARCHAR(255) NULL AFTER logo;
Check here for Syntax of ALTER TABLE
It seems you want to add a new column to your table, not a row.
From the MySQL reference it seems you can use the keyword AFTER.
ALTER TABLE users ADD COLUMN image_seal VARCHAR(255) AFTER logo;
should do the trick.
What are you using to administer your database? SQLBuddy, PHPmyAdmin and others can do this for you, without you needing to run queries.

Can not create table, errno: 150

What is bad in these queries for creating tables?
CREATE TABLE IF NOT EXISTS `CVM`.`CANDIDATE` (
`ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
`FULL_NAME` VARCHAR(64) NOT NULL ,
`HR_INTERVIEW_DATE` DATE NULL ,
`JOB_SEARCH_STATUS` TINYINT(1) NULL ,
`REFERENCES_OPTIONAL` TEXT NULL ,
`AVAILABILITY` TEXT NULL ,
`LOCATION` VARCHAR(200) NULL ,
`TRIP` TEXT NULL ,
`INTERPERSONAL_RISKS` TEXT NULL ,
`TECHNICAL_INTERVIEW_DATE` DATE NULL ,
`EXPERIENCE_IT` TINYINT UNSIGNED NULL ,
`EXPERIENCE_JAVA` TINYINT UNSIGNED NULL ,
`ENGLISH_CHECK_DATE` DATE NULL ,
`ENGLISH_READINESS_DIALOGUE` VARCHAR(100) NULL ,
`ENGLISH_TIME_IMPROVMENT` TINYINT UNSIGNED NULL ,
`ENGLISH_LEVEL_ID` INT NULL ,
`LEVEL_ID` INT NULL ,
`DESIRED_POSITIONS` VARCHAR(100) NULL ,
`HR_COMMENT` TEXT NULL ,
`EXPERT_COMMENT` TEXT NULL ,
`FOREIGN_PASSPORT_ID` INT(11) UNSIGNED NULL ,
`SALARY_ID` INT(11) UNSIGNED NULL ,
`SSE_INFO_ID` INT(11) UNSIGNED NULL ,
`EXPERT_NAME` VARCHAR(100) NULL ,
`HR_NAME` VARCHAR(100) NULL ,
`TEACHER_NAME` VARCHAR(100) NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_CANDIDATE_ENGLISH_LEVEL1` (`ENGLISH_LEVEL_ID` ASC) ,
INDEX `fk_CANDIDATE_LEVEL1` (`LEVEL_ID` ASC) ,
INDEX `fk_CANDIDATE_FOREIGN_PASSPORT1` (`FOREIGN_PASSPORT_ID` ASC) ,
INDEX `fk_CANDIDATE_SALARY1` (`SALARY_ID` ASC) ,
INDEX `fk_CANDIDATE_SSE_INFO1` (`SSE_INFO_ID` ASC) ,
CONSTRAINT `FK_CANDIDATE_ENGLISH_LEVEL1`
FOREIGN KEY (`ENGLISH_LEVEL_ID` )
REFERENCES `CVM`.`ENGLISH_LEVEL` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANDIDATE_LEVEL1`
FOREIGN KEY (`LEVEL_ID` )
REFERENCES `CVM`.`LEVEL` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANDIDATE_FOREIGN_PASSPORT1`
FOREIGN KEY (`FOREIGN_PASSPORT_ID` )
REFERENCES `CVM`.`FOREIGN_PASSPORT` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANDIDATE_SALARY1`
FOREIGN KEY (`SALARY_ID` )
REFERENCES `CVM`.`SALARY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANDIDATE_SSE_INFO1`
FOREIGN KEY (`SSE_INFO_ID` )
REFERENCES `CVM`.`SSE_INFO` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `CVM`.`CANDIDATE_HISTORY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `CVM`.`CANDIDATE_HISTORY` (
`ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
`CANDIDATE_ID` INT(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_CANDIDATE_HISTORY_CANDIDATE1` (`CANDIDATE_ID` ASC) ,
CONSTRAINT `fk_CANDIDATE_HISTORY_CANDIDATE1`
FOREIGN KEY (`CANDIDATE_ID` )
REFERENCES `CVM`.`CANDIDATE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `CVM`.`CANDIDATE_CHANGES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `CVM`.`CANDIDATE_CHANGES` (
`ID` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
`FIELD` VARCHAR(100) NULL ,
`CHANGED_VALUE` TEXT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `CVM`.`CANDIDATE_HISTORY_has_CANDIDATE_CHANGES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `CVM`.`CANDIDATE_HISTORY_has_CANDIDATE_CHANGES` (
`CANDIDATE_HISTORY_ID` INT(11) UNSIGNED NOT NULL ,
`CANDIDATE_CHANGES_ID` INT(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`CANDIDATE_HISTORY_ID`, `CANDIDATE_CHANGES_ID`) ,
INDEX `fk_CANDIDATE_HISTORY_has_CANDIDATE_CHANGES_CANDIDATE_CHANGES1` (`CANDIDATE_CHANGES_ID` ASC) ,
CONSTRAINT `fk_CANDIDATE_HISTORY_has_CANDIDATE_CHANGES_CANDIDATE_HISTORY1`
FOREIGN KEY (`CANDIDATE_HISTORY_ID` )
REFERENCES `CVM`.`CANDIDATE_HISTORY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_CANDIDATE_HISTORY_has_CANDIDATE_CHANGES_CANDIDATE_CHANGES1`
FOREIGN KEY (`CANDIDATE_CHANGES_ID` )
REFERENCES `CVM`.`CANDIDATE_CHANGES` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
In SQL workbench its all ok, but using maven-sql-plugin it failed to create table candidate_history_has_candidate_changes. All names are less than 64 symbols. Please, help!
Try to narrow down the possible causes, starting with a simple create table. Try creating this simple table with and without backtick quotes in case the plugin isn't handling them properly.
Check you are logging in as the same user in both cases.
See if there are any leftovers from the tables. CREATE IF NOT EXIST does nothing if the tables already exist. (see asker's comments for more info).
Lots of possible answers here:
http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/

MySql: Simple Problem with Creating Tables & Foreign Keys

I have problems with creating tables & foreign key. (errno:150)
here is a screenshot Updated Image: http://img264.imagevenue.com/img.php?image=14866_db_122_223lo.jpg
Maybe the problem is the database design.
-- -----------------------------------------------------
-- Table `mydb`.`projekt_user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_user` (
`UserID` INT NOT NULL ,
`Name` VARCHAR(45) NULL ,
PRIMARY KEY (`UserID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekt_auswahl`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_auswahl` (
`UserID` INT NOT NULL ,
`projekt_id` INT NOT NULL ,
`projekt_kategorie_id` INT NOT NULL ,
`projekt_attachment` VARCHAR(45) NULL ,
PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) ,
INDEX `UserID` (`UserID` ASC) ,
CONSTRAINT `UserID`
FOREIGN KEY (`UserID` )
REFERENCES `mydb`.`projekt_user` (`UserID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekt_kategorien`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
`projekt_kategorie_id` INT NOT NULL ,
`kategorie` VARCHAR(45) NULL ,
PRIMARY KEY (`projekt_kategorie_id`) ,
INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC) ,
CONSTRAINT `projekt_kategorie_id`
FOREIGN KEY (`projekt_kategorie_id` )
REFERENCES `mydb`.`projekt_auswahl` (`projekt_kategorie_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekte`
-- -----------------------------------------------------
CREATE TABLE `projekte` (
`projekt_id` INT NOT NULL ,
`projektname` VARCHAR(45) NULL ,
`projekt_status` VARCHAR(45) NULL ,
PRIMARY KEY (`projekt_id`) ,
INDEX `projekt_id` (`projekt_id` ASC) ,
CONSTRAINT `projekt_id`
FOREIGN KEY (`projekt_id` )
REFERENCES `mydb`.`projekt_auswahl` (`projekt_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
You have your foreign keys in the wrong direction, and need to load the tables in order (parents before children):
-- -----------------------------------------------------
-- Table `mydb`.`projekt_user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_user` (
`UserID` INT NOT NULL ,
`Name` VARCHAR(45) NULL ,
PRIMARY KEY (`UserID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekt_kategorien`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`projekt_kategorien` (
`projekt_kategorie_id` INT NOT NULL ,
`kategorie` VARCHAR(45) NULL ,
PRIMARY KEY (`projekt_kategorie_id`) ,
INDEX `projekt_kategorie_id` (`projekt_kategorie_id` ASC)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekte`
-- -----------------------------------------------------
CREATE TABLE `projekte` (
`projekt_id` INT NOT NULL ,
`projektname` VARCHAR(45) NULL ,
`projekt_status` VARCHAR(45) NULL ,
PRIMARY KEY (`projekt_id`) ,
INDEX `projekt_id` (`projekt_id` ASC))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`projekt_auswahl`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `projekt_auswahl` (
`UserID` INT NOT NULL ,
`projekt_id` INT NOT NULL ,
`projekt_kategorie_id` INT NOT NULL ,
`projekt_attachment` VARCHAR(45) NULL ,
PRIMARY KEY (`UserID`, `projekt_id`, `projekt_kategorie_id`) ,
INDEX `UserID` (`UserID` ASC) ,
CONSTRAINT `UserID`
FOREIGN KEY (`UserID` )
REFERENCES `projekt_user` (`UserID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `projekt_kategorie_id`
FOREIGN KEY (`projekt_kategorie_id` )
REFERENCES `projekt_kategorien` (`projekt_kategorie_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `projekt_id`
FOREIGN KEY (`projekt_id` )
REFERENCES `projekte` (`projekt_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Had I paid more attention to the ERD you provided, I'd have seen that the "crows feet" were pointing upwards, when the convention is they always point down (or the left if necessary).