2013-08-22 13 views
11

Voglio creare un riferimento alla tabella esterna. ma sto ottenendo il seguente errore:Impossibile risolvere il nome della tabella vicino a

query:

CREATE TABLE category_ids (id INT, post_id INT, 
        INDEX par_ind (post_id), 
        FOREIGN KEY (post_id) REFERENCES post(id) 
         ON DELETE CASCADE 
) ENGINE=INNODB; 

MOSTRA motore InnoDB STATUS \ G:

------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
2013-08-23 00:11:06 7f6f49e7b700 Error in foreign key constraint of table fun/category_ids: 
FOREIGN KEY (post_id) REFERENCES post(id) 
         ON DELETE CASCADE 
) ENGINE=INNODB: 
Cannot resolve table name close to: 
(id) 
         ON DELETE CASCADE 
) ENGINE=INNODB 
struttura

messaggi tabella

mysql> describe post; 
    +-------------+-----------------------+------+-----+---------------------+----------------+ 
    | Field  | Type     | Null | Key | Default    | Extra   | 
    +-------------+-----------------------+------+-----+---------------------+----------------+ 
    | id   | int(11)    | NO | PRI | NULL    | auto_increment | 
... 
    +-------------+-----------------------+------+-----+---------------------+----------------+ 
    22 rows in set (0.00 sec) 
+0

Probabilmente pensa che "post" sia una parola riservata, cosa succede se si qualifica il post nella chiave esterna con i tick posteriori (ad esempio \ "post \" (id)). –

+0

Hai qualche modo per controllare che le tue tabelle stiano usando correttamente INNODB e non qualcos'altro? (Anche se l'hai scritto chiaramente, sì) – Sugar

+0

Puoi usare 'SHOW CREATE TABLE' per controllare il motore usato per la tabella di riferimento. – deltab

risposta

33

Solo InnoDB supporta Esteri chiavi, MyISAM no. Anche se lo fosse, non è possibile creare relazioni tra tabelle di diverso tipo.

Pertanto è necessario convertire la tabella post in InnoDB. ALTER TABLE post ENGINE = InnoDB;

+0

Ho bisogno di myISAM per l'indice di testo completo :( – user2696962

+0

Non puoi avere la tua torta e mangiarla anch'essa;) –

+3

Nuova versione di mysql ha indici 'FULLTEXT' per 'InnoDB' – Antoniossss

0

Questo errore può verificarsi anche quando la tabella padre è partizionata. La rimozione del partizionamento dalla tabella padre consente di creare un vincolo esterno senza problemi.

Problemi correlati