2017-05-09 3 views
0

Die CREATE TABLE folgenden nicht funktioniert:verursacht FK einen Absturz während der Erstellung eine Tabelle

CREATE TABLE IF NOT EXISTS `transacciones`.`jos_trans_sector` (
    `id_sector` INT NOT NULL, 
    `nombre` VARCHAR(45) NULL DEFAULT NULL, 
    PRIMARY KEY (`id_sector`), 
    CONSTRAINT `fk_sector_empresa_sector1` 
    FOREIGN KEY (`id_sector`) 
    REFERENCES `transacciones`.`jos_trans_empresa_sector` (`id_sector`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

ich: Error Code: 1005. Can't create table 'transacciones.jos_trans_sector' (errno: 150)

Wenn ich SHOW ENGINE INNODB STATUS; verwende ich erhalte die folgende Ausgabe:

------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
170509 16:14:06 Error in foreign key constraint of table transacciones/jos_trans_sector: 

    FOREIGN KEY (`id_sector`) 
    REFERENCES `transacciones`.`jos_trans_empresa_sector` (`id_sector`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB: 
Cannot find an index in the referenced table where the [...] 

Ich habe einige Post überprüft, wo sie über verschiedene Typen zwischen dem id und dem 01 sprechen, aber ich habe das gleiche für beide (INT)

Irgendwelche Ideen?

Vielen Dank im Voraus.

+0

Haben Sie einen Primärschlüssel auf jos_trans_empresa_sector für den zu referenzierenden FK? –

+1

Es gibt keinen "Absturz" und der Fehler ist ziemlich offensichtlich. Deklarieren Sie die entsprechende Spalte in der referenzierenden Tabelle als 'eindeutig' oder als 'Primärschlüssel'. –

+0

Danke. Ich wusste nicht, dass ich "Indizes" erstellen musste, als ich 'N-M'-Beziehungen herstellte. –

Antwort

1

Das Problem hier ist, dass die transacciones.jos_trans_empresa_sector Tabelle einen Index für die Spalte id_sector fehlt, so dass der Fremdschlüssel nicht erstellt werden kann.

Versuchen einen eindeutigen Index hinzu:

ALTER TABLE transacciones.jos_trans_empresa_sector 
ADD UNIQUE INDEX idx_id_sector (id_sector); 

und dann versuchen, die Tabelle wieder zu erstellen.

+1

Sie benötigen einen Primärschlüssel oder einen eindeutigen Index für diese Spalte. Ansonsten kann man diese Spalte natürlich nicht als FK –

+0

Ahh bezeichnen. Aktualisierung der Antwort ... – David

Verwandte Themen