JDBC: Keys werden bei execute() von CREATE TABLE Statements ignoriert?



  • Hi,

    schon wieder eine Datenbankquatschfrage 🙄 .

    Wenn ich z.B. folgendes Statement mit execute oder executeUpdate ausführe, dann wird zwar die Tabellestruktur richtig erzeugt, jedoch fehlen die Schlüssel (generierter Code):

    CREATE TABLE IF NOT EXISTS T_CONFLICT (
    C_ID BIGINT(22) NOT NULL,
    C_PROJECT BIGINT(22) NOT NULL,
    C_TYPE BIGINT(22),
    C_COUNTRY BIGINT(22),
    C_DATE BIGINT(19),
    C_DURATION BIGINT(19),
    PRIMARY KEY (C_ID, C_PROJECT),
    FOREIGN KEY (C_COUNTRY) REFERENCES T_COUNTRY(C_ID),
    FOREIGN KEY (C_PROJECT) REFERENCES T_PROJECT(C_ID) 
    )
    

    (Es kommt auch keine SQLException.)

    Wenn ich allerdings genau das gleiche Statement in der mysql-Konsole ausführe, dann werden zumindest die primären Schlüssel erzeugt (die Fremdschlüssel werden mit der Konsole anscheinend auch nciht richtig erzeugt...zumindest zeigt er sie bei desc tablename nicht an.)

    Woran könnte das liegen?

    Vielen dank schon mal!



  • OK, das mit dem Primary Key hat sich erledigt - ich hatte an ner anderen Stelle nen Bug, so dass in dem Statment die PK Klausel fehlte...
    Aber ist das normal, dass er die Foreign Keys auf der MySQL Konsole nicht anzeigt? Oder werden die Standardmässig nicht angezeigt?



  • Aber ist das normal, dass er die Foreign Keys auf der MySQL Konsole nicht anzeigt? Oder werden die Standardmässig nicht angezeigt?

    Kann es sein, dass MySQL (noch) keine Foreign Keys unterstützt? Ich denke ich habe da was dunkel in der Richtung irgendwo im Kopf...



  • destruct0r schrieb:

    Kann es sein, dass MySQL (noch) keine Foreign Keys unterstützt? Ich denke ich habe da was dunkel in der Richtung irgendwo im Kopf...

    Ich denke das hängt von der Version ab. Müsste der OP mal in die MySQL-Doku gucken...Stichwort InnoDB


Anmelden zum Antworten