Mastershrimp: SQL importieren mit mysqli_multi_query: FK-Problem

Beitrag lesen

Heyho!

Ich baue gerade einen Installer für mein System. Um die Datenbank aufzusetzen soll er eine .sql-Datei auslesen und mit mysqli_multi_query() ausführen.

Leider können die Tabellen nicht angelegt werden, weil InnoDB Probleme beim Anlegen der FK-Constraints hat.

Ich habe deshalb mal das Beispiel für mysqli_multi_query aus der PHP-Doku mit dem einfachen FK-Beispiel aus der MySQL-Doku kombiniert, einfach nur um irgendwas irgendwie ans Laufen zu kriegen:

  
<?php  
$link = mysqli_connect("localhost", "benutzer", "passwort", "datenbankname");  
  
/* check connection */  
if (mysqli_connect_errno()) {  
    printf("Connect failed: %s\n", mysqli_connect_error());  
    exit();  
}  
  
$query  = "CREATE TABLE parent (id INT NOT NULL,  
                     PRIMARY KEY (id)  
) ENGINE=INNODB;  
  
CREATE TABLE child (id INT, parent_id INT,  
                    INDEX par_ind (parent_id),  
                    FOREIGN KEY (parent_id) REFERENCES parent(id)  
                      ON DELETE CASCADE  
) ENGINE=INNODB;";  
  
/* execute multi query */  
echo "sending query";  
if (mysqli_multi_query($link, $query)) {  
    echo "start processing multi-query";  
    do {  
        /* store first result set */  
        if ($result = mysqli_store_result($link)) {  
            while ($row = mysqli_fetch_row($result)) {  
                printf("%s\n", $row[0]);  
            }  
            mysqli_free_result($result);  
        }  
        else  
            echo "no result returned";  
  
        /* print divider */  
        if (mysqli_more_results($link)) {  
            printf("-----------------\n");  
        }  
    } while (mysqli_next_result($link));  
}  
  
/* close connection */  
mysqli_close($link);  
?>  

Die Ausgabe ist eine weiße Seite mit "sending query". Er kommt also noch nicht einmal in die while-Schleife.

Führe ich SHOW ENGINE INNODB STATUS in phpMyAdmin aus, sagt der Fehler:
LATEST FOREIGN KEY ERROR
------------------------
100301 14:14:05 Error in foreign key constraint of table mec@002dcms/parent:
FOREIGN KEY (parent_id) REFERENCES parent(id)
                     ON DELETE CASCADE
) ENGINE=INNODB:
Cannot resolve column name close to:
) REFERENCES parent(id)
                     ON DELETE CASCADE
) ENGINE=INNODB

Woran liegt das? Die Beispiel-Codes aus den Dokus müssten doch eigentlich funktionieren....Kann ich das mit mysqli_multi_query nicht machen?

Das Verrückte: Wenn ich obiges SQL in phpMyAdmin ausführe, klappts.

Hat jemand ne Idee? Bin etwas verzweifelt gerade...

Mein System:

Server Version: 5.1.33-community

Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9

MySQL-Client-Version: 5.0.51a

(XAMPP unter Windows Vista)

Viele Grüße

Mastershrimp