Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Script migrazione MDB -> MySQL: si blocca

    Ho costruito uno script che pulisce il database di destinazione, poi apre una connessione verso il database di Access e MySQL pescando i dati dal primo ed inserendoli nel secondo.

    Tutto funziona finchè sto sui 700 records, se aumento mi restituisce l'errore di pagina. E' come se andasse in sovraccarico.

    Non è una questione di tempo dello script perchè ho anche impostato un tempo infinito e comunque l'importazione di 700 records dura qualche secondo.

    Questo il codice che uso:

    Codice PHP:
                    /* I parametri di connessione */
                    
    $path"F:/Database/" ;
                    
    $db_name"database.mdb" ;
                    
    $dsource=$path.$db_name ;
                    
    $cn_string="Provider=Microsoft.Jet.OLEDB.4.0;" ;
                    
    $cn_string.="Data Source=$dsource;" ;
                    
    $cn_string.="Jet OLEDB: Database Password= password;" ;
        
                    
    /* La connessione */
                    
    if (!file_exists($dsource) ){
                        die(
    "Il database non esiste") ;
                    }
        
                    
    $cn= new COM("ADODB.Connection");
                    
    $cn->open($cn_string) ;
                    
                    
    /* Istanziamo un oggetto Recordset */
                    
    $rs= new COM("ADODB.Recordset") ;
                    
                    
    $query="SELECT * FROM gruppi ORDER BY id_gruppo";
                    
    $rs->Open($query,$cn) ;
        
                    echo 
    "[b]GRUPPI[/b]:";
                    echo 
    " Inserimento...";
                    while(!
    $rs->EOF){
                        
    $descrizione_gruppo mysql_real_escape_string($rs->Fields['descrizione_gruppo']->value);
                        
    $query_inserimento "INSERT INTO gruppi (id_gruppo, descr_gruppo, abilitazione, note, numero_iscritti) VALUES ('{$rs->Fields['id_gruppo']->value}', '$descrizione_gruppo', '{$rs->Fields['abilitazione_gruppo']->value}', '{$rs->Fields['note_gruppo']->value}', '{$rs->Fields['numero_iscritti_gruppo']->value}')";
                        
    $result mysql_query($query_inserimento$db_link) or die (mysql_error($result));
                        
    $rs->MoveNext() ;
                    }
                    
    $rs->Close();
                    echo 
    "OK

    "

    E poi continuo con le altre tabelle.
    Forse devo re-istanziare l'oggetto Recordset per ogni tabella?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho provato anche ad eliminare l'oggetto e re-istanziarlo per ogni tabella ma non cambia nulla.

    Lo script per 700 record dura circa 7 secondi. Se aumento il numero di records mi da errore.

  3. #3
    Che errore ti da?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Nessun errore dello script. Esce dalla pagina come quando un server è irraggiungibile perchè ci sono troppe richieste.

  5. #5
    Prova a stampare a video i valori che inserisci.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ok proverò, ma l'errore non è dovuto all'inserimento di dati; infatti quando eseguo la query faccio sempre un ...die(mysql_error($result).$query) in modo da bloccare lo script in caso di errore.

    Se invece il motivo è un altro faccio una prova stasera.

  7. #7
    ma non è che al 701° records c'è qualche dato sporco che mnda in errore la query?
    Prova a farti stampare tutte le insert che fai (soprattutto la 701°) e guarda cosa tenta di eseguire...

    ciao

  8. #8
    scusa, stavo vedendo dal tuo codice: tu prendi i dati dalla tabella gruppi e li reinserisci sulla stessa tabella gruppi; devi puntare alla tabella gruppi di un altro db.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    1) il problema come detto sopra non è di inserimento dati errati altrimenti a video mi restituisce un errore
    2) le tabelle hanno gli stessi nomi ma sono di 2 db distinti: in lettura da access e in scrittura su mysql.

    Per access:
    Codice PHP:
    $rs->Open($query,$cn) ; 
    Per MySQL:
    Codice PHP:
    $result mysql_query 
    Il problema si verifica per una sorta di sovraccarico del server (che di fatto è in locale sul mio pc gestito da XAMPP).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.