Domanda

So che ci sono molte domande su questo per quanto riguarda questo errore, ma anche applicando ciò che ho raccolto da quelli, ottengo ancora "Cret Creare Table (Errno: 150)"

CREATE TABLE sch_results
(
id INT NOT NULL AUTO_INCREMENT,
s_id INT UNSIGNED NOT NULL,
r_eid VARCHAR(10) NOT NULL,
cohorts INT,
allstudents INT,
comments TEXT,
PRIMARY KEY (id),
FOREIGN KEY (s_id) REFERENCES scholarships (id),
FOREIGN KEY (r_eid) REFERENCES sch_recommenders (eid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Ho verificato che le chiavi straniere siano entrambe memorizzate esattamente sotto quel nome nelle rispettive tabelle.
Ho verificato che i loro rispettivi tipi di dati corrispondano a questa query. Ho verificato che le due tabelle esistenti utilizzino INNODB e UTF8.
Ho aggiunto il non firmato non nullo alle chiavi straniere.
Ho indicizzato le due chiavi estere nei loro tavoli. Inizialmente, stavo usando S_ID e R_ID, ma ho sentito questo potrebbe causare alcuni problemi. Anche R_EID è unico, quindi sono passato a quello. Non è la chiave primaria.

Cosa mi manca? Grazie!

Lezione appresa: controlla accuratamente tutti gli aspetti dei tuoi tipi di dati!

È stato utile?

Soluzione 3

Si scopre che la raccolta è stata impostata su UTF8-UNICODE-CI anziché su UTF8-General-CI. Risolto e funziona ora.

Altri suggerimenti

Per essenzialmente tutte le cause di questo errore, ecco una risorsa esaustiva per ciò che causa Errno 150 (e Errno 121/altri errori chiave estere) in MySQL.

Errori chiave stranieri mysql ed errno 150

Il problema è che i campi di origine e target devono essere gli stessi in ogni aspetto. Ad esempio, se il campo di origine è "senza segno" e l'obiettivo ha "senza segno", otterrai questo errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top