Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    553

    Errore nella creazione di una table in MYSQL 8

    Ho creato il seguente script SQL:

    codice:
    CREATE TABLE responsabili (
        id INT NOT NULL AUTO_INCREMENT, 
        FK_RESPONSABILI_ID VARCHAR(255),
        EMAIL VARCHAR(255),
        NOME VARCHAR(100), 
        COGNOME VARCHAR(100),
        PRIMARY KEY(id,FK_RESPONSABILI_ID),
        FOREIGN KEY(FK_RESPONSABILI_ID) REFERENCES animali (responsabile) ON UPDATE CASCADE ON DELETE RESTRICT
    )ENGINE='InnoDB';
    Cerco di eseguirlo ma ottengo il seguente errore:
    codice:
    Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'responsabili_ibfk_1' in the referenced table 'animali'
    Dove sta il problema?

    Grazie
    tulipan

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Il problema sembra essere sulla tabella animali ha la chiave primaria?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    553
    si, ce l'ha

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    553
    eccola

    codice:
    CREATE TABLE animali(
    ID int(10) auto_increment PRIMARY KEY,
    NOME varchar(100),
    SPECIE varchar(100),
    ETA tinyint,
    RESPONSABILE int(10)
    )ENGINE='InnoDB';

  5. #5
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    FK_RESPONSABILI_ID è un VARCHAR(255) e RESPONSABILE è un int(10)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    553
    ok, molte grazie. Provo a risolvere.

    Buona giornata

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    553
    Non va purtroppo. Ho modificato così comunque:
    codice:
    CREATE TABLE animali(
    ID int(10) auto_increment PRIMARY KEY,
    NOME varchar(100),
    SPECIE varchar(100),
    ETA tinyint,
    RESPONSABILE int(10)
    )ENGINE='InnoDB';
    codice:
    CREATE TABLE responsabili (
        id INT(10) NOT NULL AUTO_INCREMENT, 
        animale int(10),
        EMAIL VARCHAR(255),
        NOME VARCHAR(100), 
        COGNOME VARCHAR(100),
        PRIMARY KEY(id),
        FOREIGN KEY(animale) REFERENCES animali (responsabile) ON UPDATE CASCADE ON DELETE RESTRICT
    )ENGINE='InnoDB';
    Stesso errore sulla foreign key della tabella responsabili. Mah!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Tra l'altro, a che ti serve includere FK_RESPONSABILI_ID nella chiave primaria della tabella responsabili, se hai già un id autoincrementante, quindi univoco per definizione?
    "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

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Comunque la sintassi è

    FOREIGN KEY(nome_campo_di_questa_tabella) REFERENCES AltraTabella(nome_campo_in_altra_tabella)

    Nel tuo caso, quindi, la sintassi sarebbe


    codice:
    ...
    FOREIGN KEY(animale) REFERENCES animali(ID) ON UPDATE CASCADE ...
    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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.