Ankündigung

Einklappen
Keine Ankündigung bisher.

mySQL Tabellen programmtisch erstellen funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mySQL Tabellen programmtisch erstellen funktioniert nicht

    Hallo,

    ich habe meine mySQL Datenbank die ich mit einem vorher aus einer anderen Datenbank erstellen dump befüllen möchte. Zum Dumpen der alten Datenbank habe ich

    ./mysqldump --skip-add-drop-table -u... -p... dbName > dbscheme.sql

    benutzt. Wenn ich nun dieses File mit

    ./mysql -u... -p... newDBName < dbscheme.sql

    in meine neue Datenbank einlese funktioniert das einwandfrei und alle Tabellen sind vorhanden.

    Versuche ich das nun im Code

    Code:
    try
    {  
        $con = new PDO("mysql:host=" . DB_URL . ";port=" . DB_PORT, (string)$user->countryModule->dblogin, (string)$user->countryModule->dbpassword, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));        
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
    
        $sql = "CREATE DATABASE " . $user->countryModule->database;    
        $stmt = $con->prepare($sql);    
        if (!$stmt)        
            die("ERROR: create database error 1");
        $result = $stmt->execute();
        if (!$result)
            die("ERROR: create database error 2");
         writeDebug("Database created");  
    
        $sql = "USE " . $user->countryModule->database
        $stmt = $con->prepare($sql);
        if (!$stmt)
            die("ERROR: create database error 3");
        $result = $stmt->execute();
        if (!$result)
            die("ERROR: create database error 4");
    
         writeDebug("Database assigned");  
    
        $sql = file_get_contents("files/dbscheme.sql");      
        $stmt = $con->prepare($sql);    
        if (!$stmt)        
            die("ERROR: create database error 5");    
        $result = $stmt->execute();    
        if (!$result)        
           die("ERROR: create database error 6");
    }
    catch (PDOException $e)
    {
        die("ERROR: create new country database ".$e->getMessage());
    }
    dann erstellt er nur die erste Tabelle. Es kommt aber kein Fehler und auch keine Exception.

    Das File kann ich euch hier leider nicht zeigen. Die Daten sind nicht public.

    Aber vielleicht hat ja einer von euch eine Idee wie ich überhaupt weiterkommen kann. Wie kann ich etwas debuggen das offensichtlich funktioniert nur nicht so wie es soll?

    Bin für jede Anregung dankbar

    Gruß

    Claus
    Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

  • #2
    Ich habe das Problem lösen können.

    das mysqldump locked die Tabellen vorm befüllen. Leider hatte mein User dafür keine Berechtigung. Warum das zu keinerlei Fehler führt verstehe aber weiterhin nicht.

    Gruß

    Claus
    Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

    Kommentar


    • #3
      Eigentlich sollte das Problem vielmehr sein, dass PDO nicht mehrere Queries ausführen kann.

      Kommentar

      Lädt...
      X