[MySQL Workbench] Error 1064 na forward engineeren van EER

Pagina: 1
Acties:

  • N-ickel
  • Registratie: December 2014
  • Laatst online: 25-01-2023
Beste lezer,

Dit schooljaar ben ik gestart met een blok over databases. Tot nu toe leuke stof, maar helaas ging het op software gebied al mis in de 2e les. In deze les kreeg het overgrote deel van de klas te maken met meerdere 1064 errors nadat we een datamodel uit een powerpoint hebben nagemaakt en deze probeerden te forward engineeren tot een database.

Aangezien ik niet bekend ben met MySQL heb ik geen idee of dit een bug is, of dat iedereen gewoon dezelfde fout maakt.

Wel heb ik de errors kunnen laten verdwijnen door zowel de foreign key (en index) generatie uit te zetten, en het vinkje van 'unique index' bij alle private keys weg te halen. Helaas is de database dan niet meer bruikbaar.

Kan iemand mij helpen met de correcte manier om dit probleem op te lossen? Ik heb al enkele uren het internet afgestruind maar het wil niet lukken. :(

Hier een foto van het EER Diagram:
Afbeeldingslocatie: https://imgur.com/a/qKNe6fK

Hieronder het eerste deel van de code die gegenereerd is door MySQL:
-- MySQL Workbench Forward Engineering

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='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema nickel
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema nickel
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `nickel` DEFAULT CHARACTER SET utf8 ;
USE `nickel` ;

-- -----------------------------------------------------
-- Table `nickel`.`Product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `nickel`.`Product` (
`idProduct` INT NOT NULL AUTO_INCREMENT,
`Naam` VARCHAR(45) NOT NULL,
`Merk` VARCHAR(45) NOT NULL,
`Prijs` DOUBLE NULL,
`Categorie` VARCHAR(45) NULL,
PRIMARY KEY (`idProduct`),
UNIQUE INDEX `idProduct_UNIQUE` (`idProduct` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `nickel`.`Bedrijf`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `nickel`.`Bedrijf` (
`idBedrijf` INT NOT NULL AUTO_INCREMENT,
`Naam` VARCHAR(45) NOT NULL,
`Datum oprichting` DATE NULL,
`Sector` VARCHAR(45) NULL,
`Hoofdkantoor` VARCHAR(45) NULL,
`Winst` DOUBLE NULL,
`Product_idProduct` INT NOT NULL,
PRIMARY KEY (`idBedrijf`),
UNIQUE INDEX `idBedrijf_UNIQUE` (`idBedrijf` ASC) VISIBLE,
INDEX `fk_Bedrijf_Product1_idx` (`Product_idProduct` ASC) VISIBLE,
CONSTRAINT `fk_Bedrijf_Product1`
FOREIGN KEY (`Product_idProduct`)
REFERENCES `nickel`.`Product` (`idProduct`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;





Hieronder de eerste error melding:
Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VISIBLE)
ENGINE = InnoDB' at line 11
SQL Code:
-- -----------------------------------------------------
-- Table `nickel`.`Product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `nickel`.`Product` (
`idProduct` INT NOT NULL AUTO_INCREMENT,
`Naam` VARCHAR(45) NOT NULL,
`Merk` VARCHAR(45) NOT NULL,
`Prijs` DOUBLE NULL,
`Categorie` VARCHAR(45) NULL,
PRIMARY KEY (`idProduct`),
UNIQUE INDEX `idProduct_UNIQUE` (`idProduct` ASC) VISIBLE)
ENGINE = InnoDB

SQL script execution finished: statements: 5 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

[ Voor 40% gewijzigd door N-ickel op 12-09-2018 19:34 ]


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Je volgt lessen over databases en je loopt gelijk tegen issues aan. Is het niet de bedoeling om dan zelf uit te kunnen zoeken wat er mis gaat en zo de stof te leren? Je zegt ook dat je het een en ander hebt uitgezet, maar je lijkt niet door te hebben waarom het überhaupt gedaan wordt, gezien je conclusie dat je database niet meer werkt (wat een logisch gevolg is, zodra je weet wat je hebt gedaan).

Huiswerk vragen mogen, mits je zelf doorgaat met het oplossen en met specifieke pointers komt waar je tegenaan loopt. Nu probeer je door wat zut te dumpen een voorgekauwd antwoord te krijgen en daar gaan we je niet mee helpen. Bij de foutmelding die je krijgt staat al een duidelijke hint. Volg die eerst eens.

Commandline FTW | Tweakt met mate


  • Monkeydancer
  • Registratie: November 2005
  • Laatst online: 19:30
Syntax error = typefouten nalopen en controleer je code op volledigheid.

Monkey business: pay peanuts, get monkeys


  • N-ickel
  • Registratie: December 2014
  • Laatst online: 25-01-2023
Hero of Time schreef op woensdag 12 september 2018 @ 19:41:
Je volgt lessen over databases en je loopt gelijk tegen issues aan. Is het niet de bedoeling om dan zelf uit te kunnen zoeken wat er mis gaat en zo de stof te leren? Je zegt ook dat je het een en ander hebt uitgezet, maar je lijkt niet door te hebben waarom het überhaupt gedaan wordt, gezien je conclusie dat je database niet meer werkt (wat een logisch gevolg is, zodra je weet wat je hebt gedaan).

Huiswerk vragen mogen, mits je zelf doorgaat met het oplossen en met specifieke pointers komt waar je tegenaan loopt. Nu probeer je door wat zut te dumpen een voorgekauwd antwoord te krijgen en daar gaan we je niet mee helpen. Bij de foutmelding die je krijgt staat al een duidelijke hint. Volg die eerst eens.
Ik begrijp je reactie, maar laat ik het even verduidelijken. MySQL is maar een heel klein gedeelte van dit blok, de docent gebruikte het even om te laten zien wat er de komende blokken nodig is.

Dit is ook geen huiswerkopdracht. In de les was de opdracht van de docent om deze database te creëren door middel van de forward engineer functie, maar aangezien er al heel veel studenten dezelfde error kregen is de opdracht vervallen. De docent wist op dat moment niet hoe hij ons kon helpen.

Aangezien ik het toch interessant vond ben ik er thuis mee verder gegaan, maar omdat ik de error niet opgelost kreeg vraag ik hier hulp. Terwijl dat eigenlijk niet hoeft omdat de gehele opdracht vervallen is.
Monkeydancer schreef op woensdag 12 september 2018 @ 19:47:
Syntax error = typefouten nalopen en controleer je code op volledigheid.
De code is gegenereerd door MySQL, dan moet deze toch volledig zijn zonder typfouten?

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Vervallen of niet, het blijft een schoolopdracht die je wilt oplossen. Dat de leraar niet wist hoe hij jullie verder kon helpen is ook een beetje zijn eigen schuld in de voorbereiding van de opdracht.

Je laatste zin is nou net waar je de mist mee in gaat. "Het is gegenereerd, dus zal het wel moeten werken" is een foute gedachte. Aannames enzo. Zeker als je met een pakket werkt dat van versie X uit gaat om te gebruiken, maar niet meer beschikbaar is en je nu alleen nog maar de laatste versie Y kan installeren, waar functies anders heten of zijn vervallen.

Commandline FTW | Tweakt met mate


  • N-ickel
  • Registratie: December 2014
  • Laatst online: 25-01-2023
Hero of Time schreef op woensdag 12 september 2018 @ 20:11:
Vervallen of niet, het blijft een schoolopdracht die je wilt oplossen. Dat de leraar niet wist hoe hij jullie verder kon helpen is ook een beetje zijn eigen schuld in de voorbereiding van de opdracht.

Je laatste zin is nou net waar je de mist mee in gaat. "Het is gegenereerd, dus zal het wel moeten werken" is een foute gedachte. Aannames enzo. Zeker als je met een pakket werkt dat van versie X uit gaat om te gebruiken, maar niet meer beschikbaar is en je nu alleen nog maar de laatste versie Y kan installeren, waar functies anders heten of zijn vervallen.
Ik wil de opdracht nog steeds oplossen, op welk forum/website kan ik het beste naar de oplossing zoeken?

EDIT:
De laatste alinea van die comment heeft me geholpen. Ik had geen idee dat ik een andere MySQL versie had dan de server. Ik ga nu de server manual raadplegen van de oudere versie.

[ Voor 10% gewijzigd door N-ickel op 12-09-2018 20:52 ]


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Lijkt mij handiger om je SQL query die er uitgespuugd wordt door workbench na te kijken en welke functies er verandert zijn dmv Google.

Commandline FTW | Tweakt met mate

Pagina: 1