Trasferimento DataBase

di il
9 risposte

Trasferimento DataBase

Salve, ho creato un database con mysql in ambiente xammp. Ho necessità di trasferire tale database su un'altro pc.
I passi che compio sono i seguenti:
1. vado nella cartella c:\xammp\mysql\date
2. copio la cartella del database su una pendrive
3. trasferisco la cartella del database (della pendrive) nello stesso percorso del punto 1. dell'altro computer
4. avvio phpmyadmin. Il database (ospedale lo vedo) ma quando faccio clic su una tabella appare il messaggio di errore
che la tabella non esiste (allegato). Non funzionano neppure le query scritte in linea di comando. Come posso risolvere?
Grazie
Allegati:
15258_862c93e8863c0b88a99809b325e3ed87.jpg
15258_862c93e8863c0b88a99809b325e3ed87.jpg

9 Risposte

  • Re: Trasferimento DataBase

    Per trasferire un DB da una macchina all'altra si usa mysqldump per creare un backup del database di origine e ripristinarlo poi nella macchina di destinazione.

    https://dev.mysql.com/doc/refman/8.0/en/mysqldump.htm
  • Re: Trasferimento DataBase

    Chiedo scusa ma sui DB non sono ancora molto ferrato. Ho capito che con un semplice copia e incolla non è possibile trasferire DB da un pc ad un' altro e che l'operazione per fare ciò è il dump del DB. Ho provato ad eseguire il dump, ma ottengo ancora degli errori. Premetto che creo il database ANAGRAFICA con mysql in ambiente XAMPP.
    Il database si trova nella cartella c:\xampp\mysql\data in data esiste un'altra cartella con lo stesso nome del DB e cioè ANAGRAFICA che contiene tre file: anag.frm, anag.ibd e db.opt (anag è il nome della tabella)
    per eseguire il dump eseguo il file mysqldump.exe nella cartella c:\xampp\mysql\bin\mysqldump.exe
    con il comando e il relativo messaggio di errore nel file allegato. La password è root.
    Dov'è che commetto l'errore (ho fatto diversi tentativi)?
    Grazie per la pazienza.
    Allegati:
    15258_a13ae8f49263ec1a4b47a2519d29d58b.jpg
    15258_a13ae8f49263ec1a4b47a2519d29d58b.jpg
  • Re: Trasferimento DataBase

    Se usi l'opzione -u lui si aspetta che subito dopo specifichi un utente. Non lo stai specificando e l'errore che ottieni è piuttosto chiaro: "Access denied for user ''@localhost". Gli utenti su mysql vengono identificati da <nomeutente>@<host>. Se noti, lui ti indica solo l'host, evidenza del fatto che non hai specificato il nome utente.
    
    mysqldump -u root -p anagrafica > dumpfilename.spl
    
    Lanciando il comando così lui ti chiederà di digitare la password per l'utente root. Se digiterai correttamente la password lui procederà col dump.
  • Re: Trasferimento DataBase

    Scusate il ritardo della risposta.
    Funziona. Ora voglio trasferire il database su un'altro PC.
    Digito la seguente riga
    C:\xampp\mysql\bin>mysql -u root -p anagrafica < dumpfilename.sql.

    Il sistema mi risponde con un errore :
    ERROR 1049 (42000): Unknown database 'anagrafica'
    Ma se sul nuovo pc non esiste anagrafica non dovrebbe crearlo utilizzando dumpfilename.sql?
  • Re: Trasferimento DataBase

    Per avere la risposta alla tua domanda è sufficiente aprire il file dumpfilename.sql con un qualsiasi editor di testo (anche il blocco note). Aprilo e potrai notare tu stesso che non c'è nessuna istruzione CREATE DATABASE.
    Quindi la risposta è: NO.
    Il database lo devi creare prima tu.

    L'utility mysqldump ha due opzioni, che tu non hai usato:
    --databases : consente di specificare l'elenco dei database di cui fare il dump. Se usata, il file di dump contiene le relative istruzioni CREATE DATABASE

    --add-drop-database : aggiunge l'istruzione DROP DATABASE prima della relativa CREATE DATABASE.
  • Re: Trasferimento DataBase

    Sul nuovo PC ho creato il database anagrafica (da mysql) con create database anagrafica, senza creare la tabella anag.

    eseguo l'istruzione mysqldump -u root anagrafica < c:\appo\db.sql Il risultato è il seguente:
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

    -- Dump completed on 2022-03-03 7:38:51

    Ora avvio mysql sul nuovo PC dove ho fatto il restore, ma la tabella anag di anagrafica non esiste. Eppure il restore
    è stato completato senza errori.

    Il contenuto di db.sql è il seguente:
    -- MySQL dump 10.13 Distrib 5.6.21, for Win32 (x86)
    --
    -- Host: localhost Database: anagrafica
    -- ------------------------------------------------------
    -- Server version 5.6.21

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

    --
    -- Table structure for table `anag`
    --

    DROP TABLE IF EXISTS `anag`;
    /*!40101 SET @saved_cs_client = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `anag` (
    `matr` varchar(5) NOT NULL,
    `cogn` varchar(20) DEFAULT NULL,
    PRIMARY KEY (`matr`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    /*!40101 SET character_set_client = @saved_cs_client */;

    --
    -- Dumping data for table `anag`
    --

    LOCK TABLES `anag` WRITE;
    /*!40000 ALTER TABLE `anag` DISABLE KEYS */;
    INSERT INTO `anag` VALUES ('10500','congedo');
    /*!40000 ALTER TABLE `anag` ENABLE KEYS */;
    UNLOCK TABLES;
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

    -- Dump completed on 2022-03-03 7:35:00
  • Re: Trasferimento DataBase

    daiazu ha scritto:


    eseguo l'istruzione mysqldump -u root anagrafica < c:\appo\db.sql Il risultato è il seguente:
    Scusa, ma hai cercato di usare l'utility "mysqldump" per fare il restore??
    Il restore si fa direttamente con il client mysql:
    
    mysql -u root -p anagrafica < filedump.sql
    
  • Re: Trasferimento DataBase

    Ho eseguito il comando che mi hai suggerito senza errori, ma quando apro il database risulta essere senza tabelle.
    show tables;
    Empty set
  • Re: Trasferimento DataBase

    Se non hai risolto, credo che fai prima con heidisql, invece di usare phpmyadmin.

    Ti estrae in automatico un file .sql che è in pratica tutto il db, prendi questo file e lo esegui sempre con heidisql colla macchina di destinazione.

    1) installa heidisql (lo trovi googlando facilmente)
    2) lo installi, gli dai utente e password, gli stessi che usi con phpmyadmin ovviamente)
    3) sulla sinistra ti appare la lista di tutti i database, clicchi col destro sul db che ti interessa e scegli la voce "esporta database come sql"
    4) ti si apre una finestra, metti check sulle voci: crea database, crea tabella, sotto la sezione Dati scegli ovviamente la voce "inserisci", gli dai il percorso dove creare il file e il comando esporta.
    5)trasferisci il file che ti cra sull' altro pc
    6)apri heidisql
    7)sotto menu file scegli "esegui file sql"
    8 ) schiaccia "F9" e ti esegui lo script, ti crea quindi database come lo hai sulla prima macchina


    p.s. ah beh vedo ora che il post bello vecchio... avrai risolto di sicuro
Devi accedere o registrarti per scrivere nel forum
9 risposte