Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

MySql Workbench comincia a starmi sulle scatole

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

MySql Workbench comincia a starmi sulle scatole

Messaggioda usag » lun nov 05, 2012 9:58 pm

Ciao a tutti,
come da titolo, sto battagliando da diversi giorni con MySql Workbench (su Win xp Pro SP3, 32 bit); sto progettando un piccolo database locale che gestisce i miei contatti personali, con molti "metadati" a completamento delle informazioni; di seguito, intanto, posto lo screenshot del progetto (comprese le varie associazioni previste), giusto per aver un'idea, da parte vostra, se stia procedendo per il verso giusto:

Immagine

Il problema nasce quando vado a verificare la correttezza del codice, per vedere se tutto è ok; e qui, ovviamente, i problemi; posto anche il relativo codice SQL, prodotto dal software:

Codice: Seleziona tutto
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 `Contatti` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

USE `Contatti` ;



-- -----------------------------------------------------

-- Table `Contatti`.`Professione`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Professione` (

  `idProfessione` INT NOT NULL AUTO_INCREMENT ,

  `professione` VARCHAR(45) NOT NULL ,

  PRIMARY KEY (`idProfessione`) )

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `Contatti`.`Nazione`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Nazione` (

  `idNazione` INT NOT NULL AUTO_INCREMENT ,

  `nazione` VARCHAR(20) NOT NULL ,

  PRIMARY KEY (`idNazione`) )

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `Contatti`.`Comune`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Comune` (

  `idComune` INT NOT NULL AUTO_INCREMENT ,

  `comune` VARCHAR(20) NOT NULL ,

  `Nazione_idNazione` INT NOT NULL ,

  PRIMARY KEY (`idComune`) ,

  INDEX `fk_Comune_Nazione1_idx` (`Nazione_idNazione` ASC) ,

  CONSTRAINT `fk_Comune_Nazione1`

    FOREIGN KEY (`Nazione_idNazione` )

    REFERENCES `Contatti`.`Nazione` (`idNazione` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `Contatti`.`Contatto`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Contatto` (

  `idContatto` INT NOT NULL AUTO_INCREMENT ,

  `nome` VARCHAR(30) NULL ,

  `cognome` VARCHAR(30) NULL ,

  `via` VARCHAR(45) NULL ,

  `tel_casa` INT NULL ,

  `fax` INT NULL ,

  `cellulare` INT NULL ,

  `cellulare2` INT NULL ,

  `email` VARCHAR(25) NULL ,

  `descrizione` TEXT NULL ,

  `sito_web` VARCHAR(25) NULL ,

  `Comune_idNazione` INT NOT NULL ,

  `Professione_idProfessione` INT NOT NULL ,

  `Comune_idComune` INT NOT NULL ,

  PRIMARY KEY (`idContatto`) ,

  INDEX `fk_Contatto_Professione1_idx` (`Professione_idProfessione` ASC) ,

  INDEX `fk_Contatto_Comune1_idx` (`Comune_idComune` ASC) ,

  CONSTRAINT `fk_Contatto_Professione1`

    FOREIGN KEY (`Professione_idProfessione` )

    REFERENCES `Contatti`.`Professione` (`idProfessione` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION,

  CONSTRAINT `fk_Contatto_Comune1`

    FOREIGN KEY (`Comune_idComune` )

    REFERENCES `Contatti`.`Comune` (`idComune` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION)

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `Contatti`.`Sport`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Sport` (

  `idSport` INT NOT NULL AUTO_INCREMENT ,

  `sport` VARCHAR(25) NOT NULL ,

  PRIMARY KEY (`idSport`) )

ENGINE = InnoDB;





-- -----------------------------------------------------

-- Table `Contatti`.`Contatto_Sport`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `Contatti`.`Contatto_Sport` (

  `Contatto_idContatto` INT NOT NULL ,

  `Sport_idSport` INT NOT NULL ,

  PRIMARY KEY (`Contatto_idContatto`, `Sport_idSport`) ,

  INDEX `fk_Contatto_has_Sport_Sport1_idx` (`Sport_idSport` ASC) ,

  INDEX `fk_Contatto_has_Sport_Contatto1_idx` (`Contatto_idContatto` ASC) ,

  CONSTRAINT `fk_Contatto_has_Sport_Contatto1`

    FOREIGN KEY (`Contatto_idContatto` )

    REFERENCES `Contatti`.`Contatto` (`idContatto` )

    ON DELETE NO ACTION

    ON UPDATE NO ACTION,

  CONSTRAINT `fk_Contatto_has_Sport_Sport1`

    FOREIGN KEY (`Sport_idSport` )

    REFERENCES `Contatti`.`Sport` (`idSport` )

    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;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Professione`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (200, 'Architetto');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (201, 'Geometra');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (202, 'Ragioniere');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (203, 'Commercialista');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (204, 'Agente immobiliare');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (205, 'Agente di commercio');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (206, 'Informatico');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (207, 'Commerciante');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (208, 'Impiegato');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (209, 'Operaio');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (210, 'Elettricista');

INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (211 , 'Studente');



COMMIT;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Nazione`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Nazione` (`idNazione`, `nazione`) VALUES (30, 'Italia');

INSERT INTO `Contatti`.`Nazione` (`idNazione`, `nazione`) VALUES (31, 'Romania');

INSERT INTO `Contatti`.`Nazione` (`idNazione`, `nazione`) VALUES (32, 'Albania');

INSERT INTO `Contatti`.`Nazione` (`idNazione`, `nazione`) VALUES (33, 'Marocco');



COMMIT;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Comune`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (10, 'Firenze', 30);

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (11, 'Prato', 30);

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (12, 'Pistoia', 30);

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (13, 'Empoli', 30);

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (14, 'Quarrata ', 30);

INSERT INTO `Contatti`.`Comune` (`idComune`, `comune`, `Nazione_idNazione`) VALUES (15, 'Scandicci', 30);



COMMIT;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Contatto`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1000, 'Alessandro', 'Tabani', NULL, 0573.717202, NULL, 339.5037585, NULL, 'a.tabani1976@libero.it', 'Ex allievo Krav Maga, compagno di Elena Fabbri', NULL, 30, 210, 14);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1001, 'Alessandro', 'Turi', NULL, 0573.72037, NULL, 331.9900690, NULL, 'alex.t.92@hotmail.it', 'Ex allievo Krav Maga, studente per Geometra, volontario Misericordia Pistoia', 'www.sealt.it', 30, 211, 14);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1002, 'Alessandro', 'Paolercio', NULL, NULL, NULL, 389.6854007, NULL, 'bubugnigni@hotmail.it', 'Ex allievo Krav Maga, flashato per ciò che riguarda l\'ambito militare', NULL, 30, 209, 14);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1003, 'Ahmid ', 'Tali', NULL, NULL, NULL, 338.1057456, NULL, NULL, 'Ex assistente istruttore Krav Maga, lavora a Coverciano, nel magazzino della A.C. Fiorentina', NULL, 34, 208, 10);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1004, 'Andrea ', 'Magni', NULL, NULL, NULL, 334.8988824, NULL, 'andre_smoking91_@hotmail.it', 'Ex allievo Krav Maga, mezzo tossico', NULL, 30, 211, 14);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1005, 'Antonio', 'Giacummo', NULL, NULL, NULL, 320.3070293, NULL, 'info@f2awebstudio.com', 'Ex allievo Krav Maga', NULL, 30, 206, 10);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1006, 'Camilla', 'Corezzi', NULL, NULL, NULL, 347.1836162, NULL, 'camicore@hotmail.it', 'Ex allieva Krav Maga', NULL, 30, 211, 10);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1007, 'Cinzia', 'Candia', 'Via Don Perosi 02', NULL, NULL, 328.2939787, 345.5677535, 'chicca89.c@hotmail.it', 'Ex allieva Krav Maga', NULL, 30, 211, 10);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1008, 'Claudio', 'Fucile', NULL, NULL, NULL, 340.5813774, NULL, 'claudio.fucile@gmail.com', 'Assistente istruttore Krav Maga, fumettista', NULL, 30, 207, 10);

INSERT INTO `Contatti`.`Contatto` (`idContatto`, `nome`, `cognome`, `via`, `tel_casa`, `fax`, `cellulare`, `cellulare2`, `email`, `descrizione`, `sito_web`, `Comune_idNazione`, `Professione_idProfessione`, `Comune_idComune`) VALUES (1009, 'Cristiano', 'Pecchioli', 'Via Crocetti 12', NULL, NULL, 339.2820783, 335.5370994, 'cripecch@tin.it', 'Istruttore Krav Maga', NULL, 30, 210, 10);



COMMIT;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Sport`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (100, 'Karate');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (101, 'Krav Maga');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (102, 'Judo');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (103, 'Muay Thai');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (104, 'Kick Boxe');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (105, 'Boxe');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (106, 'MMA');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (107, 'Tiro con l\'arco');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (108, 'Pallavolo');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (109, 'Basket');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (110, 'Nuoto');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (111, 'Corsa');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (112, 'Bicicletta');

INSERT INTO `Contatti`.`Sport` (`idSport`, `sport`) VALUES (113 , 'Tiro in poligono');



COMMIT;



-- -----------------------------------------------------

-- Data for table `Contatti`.`Contatto_Sport`

-- -----------------------------------------------------

START TRANSACTION;

USE `Contatti`;

INSERT INTO `Contatti`.`Contatto_Sport` (`Contatto_idContatto`, `Sport_idSport`) VALUES (1008, 101);

INSERT INTO `Contatti`.`Contatto_Sport` (`Contatto_idContatto`, `Sport_idSport`) VALUES (1009, 101);



COMMIT;



Alla fine del completamento (Forward engineering), mi restituisce puntualmente un errore:

Codice: Seleziona tutto
Executing SQL script in server

ERROR: Error 1062: Duplicate entry '200' for key 'PRIMARY'



INSERT INTO `Contatti`.`Professione` (`idProfessione`, `professione`) VALUES (200, 'Architetto')



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



Il problema è che quando vado a correggere il suddetto errore, me ne compare un altro identico (Duplicate key), ma con valori d'attributi e values differenti; tradotto: ne correggo uno, e ne spunta fuori un altro (della solita "razza").
Allora mi son messo a spulciare il diagramma, passo per passo, e sinceramente non vedo queste decine di duplicati che puntualmente si materializzano via via; a questo punto, mi rimetto a voi, altrimenti cancello tutto e ricomincio da capo, magari usando PhpMyadmin.
Ultima cosa: non c'è verso settare alcuna password, né tantomeno un utente, per accedere al database; mi da sempre credenziali non valide, o scemenze analoghe. Praticamente, devo ogni volta connettermi, usando i parametri di default: cioè root per l'utente e la password "automatica", generata dal sistema; altro bel problema.
grazie mille a tutti, spero che almeno questo post riceva risposta.
grazie [;)].
Avatar utente
usag
Bronze Member
Bronze Member
 
Messaggi: 503
Iscritto il: mar ott 03, 2006 4:40 am

Re: MySql Workbench comincia a starmi sulle scatole

Messaggioda ilmito » mer lug 10, 2013 10:23 pm

Il problema della chiave primaria non è cancellare la tabella ma cancellare quei record o modificarne la chiave primaria stessa per evitare i duplicati , concetto assurdo per questa tipologia di campo (PK).
Avatar utente
ilmito
Senior Member
Senior Member
 
Messaggi: 348
Iscritto il: mer mar 18, 2009 6:49 pm


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising