Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    5

    Problema con le FOREIGN KEY

    Ciao a tutti, non ho mai postato messaggi, xò è da un pezzettino che seguo il forum di HTML.it, e adesso avrei bisogno di un aiutino con una query in MySQL che non vuole andare:

    La query la faccio tramite uno script in php ed è la seguente:

    CREATE TABLE `dettaglio_ordini`(
    id INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    id_ordine INT(12) UNSIGNED NOT NULL,
    id_prodotto INT(10) UNSIGNED NOT NULL,
    quantita INT(4),
    PRIMARY KEY(id),
    FOREIGN KEY(id_ordine) REFERENCES ordini(id)
    ON UPDATE NO ACTION
    ON DELETE NO ACTION,
    FOREIGN KEY(id_prodotto) REFERENCES prodotti(id)
    ON UPDATE NO ACTION
    ON DELETE NO ACTION)ENGINE = InnoDB
    ;

    prima xò creo le tabelle a cui fa riferimento ovviamente, cioè:

    CREATE TABLE `ordini`(
    id INT(12) UNSIGNED AUTO_INCREMENT NOT NULL,
    id_utente CHAR(30) NOT NULL,
    data DATE NOT NULL DEFAULT('0000-00-00'),
    ora TIME NOT NULL DEFAULT('00:00:00'),
    prezzo CHAR(10) NOT NULL,
    inviato BOOLEAN NOT NULL,
    concluso BOOLEAN NOT NULL,
    PRIMARY KEY(id),
    FOREIGN KEY(id_utente) REFERENCES `clienti`(id))ENGINE = InnoDB
    ;

    e

    CREATE TABLE `prodotti`(
    id INT(10) UNSIGNED AUTO_INCREMENT NOT NULL,
    nome CHAR(50) NOT NULL,
    tipo CHAR(30) NOT NULL,
    descrizione CHAR(200) NOT NULL,
    foto CHAR(50),
    prezzo CHAR(10) NOT NULL,
    PRIMARY KEY(id))ENGINE = InnoDB
    ;

    la seconda tabella la crea normalmente, e anche quella ha una chiave esterna verso la tabella clienti, che quì non ho messo!

    l'errore che mi da è il seguente:"Can't create table './carrello/dettaglio_ordini.frm' (errno: 150)"!!

    Qualcuno sa per caso aiutarmi?

    So che ci sono altri post con il famigerato "error 150", però, seguendoli tutti, non ho ancora cavato il ragno dal buco, in quanto ho guardato, e: i tipi corrispondono, le tabelle sono tutte InnoDB e sul server sono abilitate di default (ho MySQL 5) ... non so più come creare quella tabella con 2 chiavi esterne (se ne tolgo una e lascio l'altra funziona, però ... )!!

  2. #2
    sei proprio certo che la tabella ordini viene creata????

    mi sa di no. il default non deve essere messo tra parentesi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    5
    Si, hai ragione, il problema era che non mi creava la tabella ordini, perchè non mi faceva l'altra foreign key con la tabella clienti ...

    Un errore così banale che mi ha fatto perdere un sacco di tempo!!

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.