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

    PHPMyAdmin e la FOREIGN KEY

    Salve,

    come al solito partiamo dal presupposto che ne so pochissimo di MySQL ma, e stavolta il ma c'è, se io riesco a far funzionare il database su heidiSQL e poi eseguo lo stesso codice da PHPMyAdmin per quale assurdo motivo non dovrebbe funzionare?

    il database è così composto:

    codice:
    CREATE TABLE `componenti` (
    	`ID` VARCHAR(4) NOT NULL,
    	`anno` INT(4) NOT NULL,
    	`produttore` VARCHAR(30) NOT NULL,
    	`nome` VARCHAR(40) NOT NULL,
    	PRIMARY KEY (`ID`)
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB;
    
    CREATE TABLE `cpu_tab` (
    	`componenti_ID` VARCHAR(4) NOT NULL,
    	`socket` VARCHAR(5) NOT NULL,
    	`codename` VARCHAR(20) NOT NULL,
    	`architettura` VARCHAR(3) NOT NULL,
    	`clock` INT(4) UNSIGNED NOT NULL,
    	`score` INT(6) NULL DEFAULT NULL,
    	PRIMARY KEY (`componenti_ID`),
    	CONSTRAINT `FKcpu_tab` FOREIGN KEY (`componenti_ID`) REFERENCES `componenti` (`ID`) ON DELETE CASCADE
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB;
    E almeno in teoria è giusto, il problema è il seguente:
    su HeidiSQL la FOREIGN KEY con ON DELETE CASCADE fa il suo sporco lavoro( se cancello un record dalla tabella componenti viene cancellato anche nell'altra tabella, in PhPMyAdmin questo non accade, è come se ignorasse bellamente ON DELETE CASCADE.

    Secondo problema, il mio attuale host( gratuito) non offre accesso remoto al database... quindi non posso configurarlo in modo che lavori con HeidiSQL cercando di aggirare il problema .-.

    Qualche anima pia sa dirmi per quale assurdo motivo non vuole funzionare?

    Uso questo pezzo di codice per inserire i dati:
    codice:
    INSERT INTO `componenti` (`ID`, `anno`, `produttore`, `nome`) VALUES ('cp1', 2012, 'amd', 'fx-6300');
    INSERT INTO `cpu_tab` (`componenti_ID`, `socket`, `codename`, `architettura`, `clock`) VALUES ('cp1', 'am3+', 'vishera', 'x64', 3511);
    e questo per cancellarli
    codice:
    DELETE FROM `componenti` WHERE  `ID`='cp1';

  2. #2
    Mi rispondo da solo, è colpa dell'host che non fornisce come motore di memorizzazione di PhpMyAdmin InnoDB, ed ovviamente ciò non permette di sfruttare le foreign key

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.