Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MYSQL - JAVA] Errore di inserimento

    Salve sto usando java con eclipse integrando MySql. Ho nua tabella utenti (docenti) e una tabella ricevimenti:

    codice:
    create table if not exists Utenti(
    ID int not null auto_increment,
    Nome_utente varchar(30) not null,
    Password varchar(10) not null,
    Cognome char(30),
    Nome char(30),
    Email varchar(30),
    Telefono varchar(15),
    Fax varchar(15),
    Dipartimento char(30),
    Pagina_web varchar(70),
    Ufficio varchar(10),
    Tipo set('false','true') default 'false',
    primary key (ID));
    
    create table if not exists Ricevimento(
    ID int not null auto_increment,
    Docente int not null default '0',
    Giorno char(10),
    Orario_Inizio time,
    Orario_Fine time,
    Dipartimento char(30),
    Piano varchar(10),
    Stanza int(3),
    primary key(ID),
    foreign key (Docente) references Utenti(ID));
    Ho fatto la query di inserimento per aggiungere un nuovo ricevimento per un determinato docente:

    codice:
    INSERT INTO Ricevimento VALUES ('2', 'lun', '10:00:00', '11:00:00', 'Math', 'terzo', '23');
    ed ho avuto il seguente errore:
    com.mysql.jdbc.exceptions.MySQLIntegrityConstraint ViolationException: Cannot add or update a child row: a foreign key constraint fails (`db_schedule/ricevimento`, CONSTRAINT `Ricevimento_ibfk_1` FOREIGN KEY (`Docente`) REFERENCES `utenti` (`ID`))

    cosa dovrei fare? da quel che ho capito non ho fatto errori di sintassi, ma un errore nel database..
    aiuto!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    C'è un errore nella sintassi dell'istruzione SQL: il primo campo è auto-increment, quindi hai due possibilità: o fai l'inserimento indicando esplicitamente i nomi dei campi della tabella o includi il primo campo vuoto:
    codice:
    // Metodo 1:
    INSERT INTO Ricevimento(Docente,Giorno,Orario_Inizio,Orario_Fine,Dipartimento,Piano,Stanza)
    VALUES ('2', 'lun', '10:00:00', '11:00:00', 'Math', 'terzo', '23');
    
    // Metodo 2:
    INSERT INTO Ricevimento VALUES ('', '2', 'lun', '10:00:00', '11:00:00', 'Math', 'terzo', '23');
    In pratica, per il DBMS il valore 'lun' doveva essere la chiave esterna della tabella Docenti... che non poteva essere per ovvie ragioni...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ho fatto come dici tu (Metodo 2) ma ho avuto questo errore:

    Incorrect integer value: '' for column 'ID' at row 1

  4. #4
    ho risolto in questa maniera, cambiando la tabella ricevimento non da problemi:

    codice:
    create table if not exists Ricevimento(
    Docente int not null default '0',
    Giorno varchar(10),
    Orario_Inizio time,
    Orario_Fine time,
    Dipartimento char(30),
    Piano varchar(10),
    Stanza varchar(5),
    primary key(Docente, Giorno, Orario_Inizio, Orario_Fine),
    CONSTRAINT `Ricevimento_ibfk_1` foreign key (Docente) references Utenti(ID));
    graize cmq

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.