Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126

    [MySQL] Come impostare le FK?

    Salve a tutti,
    ho un problema legato a mysql 5.
    Ho creato un db InnoDB con MySqlYog 5 sotto ambiente windows2000 in cui ho delle tabelle nelle quali vi sono delle chiavi esterne.Per lavoro uso linux in cui vi è installato la stessa versione di mySQL.Con mySqlYog ho esportato la creazione del db in un file .sql. Quando tento di lanciarlo per ricreare il db sotto linux mi crea tutte le tabelle e mi segnala errore in alcune di quelle con la chiave esterna segnalanomi che nn è possibile crearle.Se commento nel file .sql la generazione della chiave esterna e lo rilancio allora funzionano.Ma come ben capite nn è quello che voglio.
    Posto il codice generato dall programma:
    KEY `FK_ic_campo` (`ID_Nome_Oggetto`),
    CONSTRAINT `ic_campo_ibfk_1` FOREIGN KEY (`ID_Nome_Oggetto`) REFERENCES `ic_nome_oggetto` (`ID`)

    Posto l'errore:
    "ERROR 1005 (HY000): Can't create table './Contact/ic_rubrica.frm' (errno: 150)
    "
    Domanda:
    1) Forse ho sbagliato a definire le chiavi esterne in MySqlYog?E se si qual'è il modo corretto di crearle?

    2)Qualcuno sa come creare i riferimenti delle chiavi esterne direttamente in mysql? Per esempio ho due tabelle: 'ic_campo' e 'ic_nome_oggetto'.In 'ic_campo' vi è una campo chiamato ID_nome_oggetto che è la chiave esterna dell'entità
    che usa la chiave primaria di 'ic_nome_oggetto'.

    Vi ringrazio per l'aiuto.Ciao

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    probabilmente le tabelle non usano il innodb engine
    comunque qua c'è la sintassi dell'alter table
    una roba del genere
    alter table tabella
    add constraint
    foreign key nome colonna tabella(colonna)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Le tabelle usano l'innoDB altrimenti non posso impostare le chiavi secondarie.Ho provato come hai detto tu ma niente da fare.Grazie cmq, se hai altri suggerimenti ben accetti.
    Ciao

  4. #4

    Re: [MySQL] Come impostare le FK?

    Originariamente inviato da cat82

    Posto l'errore:
    "ERROR 1005 (HY000): Can't create table './Contact/ic_rubrica.frm' (errno: 150)
    "
    Domanda:
    1) Forse ho sbagliato a definire le chiavi esterne in MySqlYog?E se si qual'è il modo corretto di crearle?
    1) Dipende anche dall'ordine in cui le tabelle vengono create, spesso mi è capitato che un dump non conservasse l'ordine corretto in relazione alla dipendenza che si crea con le foreign key.
    Ogni tabella Y, che ha una foreign key a una tabella X, va creata dopo aver già creato la tabella X.
    Controlla che ic_rubrica non si riferisca a una tabella non ancora creata.

    2) Gli attributi della tabella referente (Y nel caso di sopra) su cui definisci una foreign Key, devono avere lo stesso tipo degli attributi riferiti, può capitare ad esempio di mettere UNSIGNED in un attributo e dimenticarsi di riportarlo anche all'altro attributo.

    2)Qualcuno sa come creare i riferimenti delle chiavi esterne direttamente in mysql? Per esempio ho due tabelle: 'ic_campo' e 'ic_nome_oggetto'.In 'ic_campo' vi è una campo chiamato ID_nome_oggetto che è la chiave esterna dell'entità
    che usa la chiave primaria di 'ic_nome_oggetto'.

    Vi ringrazio per l'aiuto.Ciao

    codice:
    CREATE TABLE ic_nome_oggetto (
      ID_nome_oggetto INT PRIMARY KEY
    ) TYPE=InnoDB;
    
    CREATE TABLE ic_campo(
      ID_nome_oggetto INT,
      FOREIGN KEY(ID_nome_oggetto) REFERENCES ic_nome_oggetto(ID_nome_oggetto)
    ) TYPE=InnoDB;

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Grazie mille, mi è capitata una cosa curiosa.
    Ho creato il dump con "MySQL Administrator" della sun, poi ho caricato il dump con il restore e mi ha segnalato errore sempre nelle tabelle...ho tavanato un po, rilanciato + volte il restore e sempre errore, poi magicamente dopo un po si sono create corrette.
    Domanda: Io voglio usare le chiavi esterne, ma guardando anche il db mysql esso non le usa.Non mi crea i file .myd e .myi ma solo i .frm.C'è un modo per careare anche questi?
    P.S.: Ieri verso le 19 ho postato una richiesta d'aiuto per un JTable.
    Non so che fine ha fatto, qualche amministratore può dirmelo per favore?
    Ciao e grazie a tutti

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Mi son sbagliato sul post, l'ho trovato anche se nessuno mi h risposto.
    Ringrazio cmq gli amministratori.
    Ciao

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,322
    Originariamente inviato da cat82
    P.S.: Ieri verso le 19 ho postato una richiesta d'aiuto per un JTable.
    Scusa per il disagio, sono io che ogni tanto passo e cambio i titoli per renderli conformi alle convenzioni ed estendendone il testo in modo che siano più facilmente ricercabili attraverso il motore del forum.

    Basta comunque che usi il pulsante Cerca in fondo ai tuoi post per recuperare i tuoi messaggi oppure analizzando quelli recenti.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.