Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Recupero record con campo BLOB

    E' stata danneggiata una tabella di un db MySql, con la perdita di un record. Fortunatamente in locale avevo un backup del db e sono riuscito a recuperare il record. Il problema è questo: quando tento di caricare in svariati modi il record nel db in produzione mi viene restituito il messaggio di errore che mi dice che il pacchetto è di dimensione troppo alta per il parametro max_allowed_packet (Got a packet bigger than 'max_allowed_packet' bytes). Il record è composto da 2 campi: uno di tipo VARCHAR e l'altro di tipo MEDIUMBLOB. Il portale si trova su un hosting per il quale non ho alcuna possibilità di variare i parametri, ed inoltre posso accedere al db solo tramite phpmyadmin. Avete qualche idea per aggirare il problema?
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    Puoi usare exec?

    Fai un dump del DB poi lo importi con:

    $cmd = 'mysql -h'.$host.' -u'.$user.' -p'.$pwd.' '.$DBName.' < dumpfile.sql';
    exec($cmd);


    ----


    EDIT: immagino che da phpmyadmin tu importi l'SQL vero? o lo scrivi a mano?

  3. #3
    Ho provato sia importando l'sql, che importando il csv e anche scrivendo a mano in phpmyadmin. Con questa istruzione però non sovrascrivo tutto il db vero? (nel file di dump ho messo solo l'INSERT per quel record, anche perchè dalla data del backup erano state aggiunte altre cose, ma quel record era rimasto uguale)
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    No, essenzialmente esegue il file sql, poi a seconda di quello che c'è scritto dentro fa cose diverse! (se ci metti un drop table allora ti cancellerà la tabella, altrimenti no)

  5. #5
    Non funziona.
    Il file sql va bene nella stessa cartella dello script php che esegue il comando?
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    sì va bene ma allora è probabile che l'host non ti dia la possibilità di eseguire comandi in quel modo

  7. #7
    Altre idee? Si tratta di un record composto da 2 campi: il primo è di tipo VARCHAR come dicevo e tramite phpmyadmin ho inserito la stringa che mi serviva e qua tutto bene; il secondo è un mediumblob composto da tutta una serie di numeri e lettere. Ho provato a comprimere un file nel quale avevo salvato la stringa ed ero riuscito ad importarlo, ma poi era di dimensioni minori e nel sito non mi visualizzava niente
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    residenza
    Edinburgh
    Messaggi
    401
    E aggiungerlo a pezzi?

    tipo

    insert into tabella (nomecolonna) values=("<primo 1/3 del campo>");
    update tabella set nomecolonna=concat(nomecolonna, "<da 1/3 a 2/3>");
    update tabella set nomecolonna=concat(nomecolonna, "<ultimo 1/3 del campo>");


    Ma, domanda: come vengono normalmente inseriti questi campi?

  9. #9
    Vengono inseriti con base64_encode. Ho provato ad utilizzare base64_decode, ma la decodifica è sbagliata.
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  10. #10
    Un piccolo passo avanti: facendo 2 volte base64_decode adesso mi visualizza i dati
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

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.