2017-12-10 1 views
1

Ich habe einen Syntaxfehler in meinen SQL-Abfragen, was ist falsch?Syntaxfehler in meinen SQL-Abfragen

dies ist die Abfrage:

CREATE TABLE post_cat(
    cat_id int(2) AUTO_INCREMENT NOT null PRIMARY key, 
    cat_text varchar(255), 
    post_cat varchar, 
    FOREIGN KEY (post_cat) REFERENCES post(post_cat) 
    ) 
+5

Was ist Ihr Fehler? –

+0

# 1005 - Die Tabelle 'telegram'.post_cat' kann nicht erstellt werden (errno: 150" Die Fremdschlüsselbedingung ist falsch gebildet ") (Details ...) –

+0

Fügen Sie Ihre Abfrage zum Hinzufügen der' post' Tabelle hinzu, die 'post_cat' enthält vor dieser Abfrage. – MAZux

Antwort

2

Sie benötigen eine Länge für die varchar:

CREATE TABLE post_cat (
    cat_id int(2) AUTO_INCREMENT NOT null PRIMARY key, 
    cat_text varchar(255), 
    post_cat varchar(255), 
    FOREIGN KEY (post_cat) REFERENCES post(post_cat) 
); 

Die Länge sollte in der post Tabelle die Definition entsprechen.

Here ist eine SQL Fiddle zeigt die Tabellenerstellung.

+0

jetzt habe ich neue Fehler MySQL sagte: Dokumentation # 1005 - kann nicht erstellt werden Tabelle 'telegram'.'post_cat' (errno: 150 "Fremdschlüsselbedingung ist nicht richtig formiert") (Details ...) –

+0

' post_cat' scheint wie ein wirklich seltsamer Primärschlüssel für eine Tabelle namens 'post'. Trotzdem arbeitet der Code mit den korrekten Spaltendefinitionen, wie in der SQL Fiddle gezeigt. –

3

Alle Varchare benötigen eine Längenangabe.

CREATE TABLE post_cat(
cat_id int(2) AUTO_INCREMENT NOT null PRIMARY key, 
cat_text varchar(255), 
post_cat varchar(1000), 
FOREIGN KEY (post_cat) REFERENCES post(post_cat) 
); 
+0

jetzt habe ich neuen Fehler MySQL sagte: Dokumentation # 1005 - Kann Tabelle 'telegram'.post_cat' nicht erstellen (errno: 150" Fremdschlüssel Einschränkung wird falsch gebildet ") (Details ...) –