Simple Machines Community Forum

SMF Support => Language Specific Support => Italiano (Italian) => Topic started by: marcoaureliocommodo on February 01, 2012, 11:13:45 AM

Title: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 01, 2012, 11:13:45 AM
salve, avrei una domanda, è possibile dopo aver creato un forum con database mysql, convertirlo con database sqlite?
se non mi sbaglio con phpmyadmin è possibile ottenere una copia del database in linguaggio sqlite, giusto?

grazie mille
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 01, 2012, 11:35:32 AM
Lo puoi esportare in SQL, quindi *presumo* (non l'ho mai fatto) sia poi possibile re-importarlo usando l'equivalente di phpmyadmin per SQlite...che si chiama...non mi ricordo più, c'è un topic nella board inglese, vado a cercarlo.

Edit: eccolo http://www.simplemachines.org/community/index.php?topic=451333.msg3155878#msg3155878
e questo è lo script http://www.sqlitemanager.org/

L'ho usato solo quella volta, quindi non ricordo esattamente come funziona...
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 01, 2012, 01:29:53 PM
ah ok quindi per convertire un database mysql in sqlite devo andare in phpmyadmin, premere su esport, sql, e copiare il codice che  mi danno, poi creare un nuovo file con estensione .db e incollare quello script copiato prima. Poi andare in setting.php e cambiare la riga $db_name e così avrò il forum con sqlite invece che con mysql, giusto?
il secondo link a che serve...scusate la mia ignoranza...

ps: in setting.php, ho trovato solo una riga di codice che dice $db_name = 'my_prova';
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 01, 2012, 05:55:52 PM
No...

Allora: vai in phpmyadmin, esporti in un file sql (esporta solo le tabelle, non l'intero database, guarda la guida che ti ho linkato prima, mi pare di averlo spiegato là...credo).
Carichi SMF e fai l'installazione usando SQlite come database.
Prendi lo script che trovi qui (http://www.sqlitemanager.org/) lo decomprimi e lo carichi sul tuo spazio.
Lanci dal browser sqlite manager e gli indichi di usare come database il file di database che hai creato durante l'installazione di SMF.
Da sqlite manager importi il file che hai esportato da phpmyadmin.

In linea di principio questa è la procedura, non l'ho mai testata...
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 08:42:57 AM
andando in php my amdin e facendo esport ami viene solo un lungo script in php...
ho messo in allegato una foto


ps: devo scaricare qualcosa da questo sito? sqlitemanager.org (http://sqlitemanager.org)?

grazie mille
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 08:55:28 AM
Quote from: marcoaureliocommodo on February 02, 2012, 08:42:57 AM
andando in php my amdin e facendo esport ami viene solo un lungo script in php...
ho messo in allegato una foto
In allegato hai messo la pagina di export e va bene.
C'è selezionato SQL e va bene (non è php quello che ottieni, ma SQL).
Se vuoi seleziona "compresso con zip" o "compresso con gzip" e premi "vai" (o equivalente).

Quote from: marcoaureliocommodo on February 02, 2012, 08:42:57 AM
ps: devo scaricare qualcosa da questo sito? sqlitemanager.org (http://sqlitemanager.org)?

Quote from: emanuele on February 01, 2012, 05:55:52 PM
Prendi lo script che trovi qui (http://www.sqlitemanager.org/) lo decomprimi e lo carichi sul tuo spazio.

In altre parole, sì questo: http://sourceforge.net/projects/sqlitemanager/files/sqlitemanager/1.2.4/
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 09:26:10 AM
QuoteLanci dal browser sqlite manager e gli indichi di usare come database il file di database che hai creato durante l'installazione di SMF

non vedo dove si importa il file che ho scricato da phpmyadmin...

scusate, ma la faccenda è molto complicata per me, io non sono un grande esperto...

ps: il mio obbiettivo sarebbe quello di trasferire un forum con db mysql e trasferirlo identico sia come file sia come contenuto del database cambiando però quest'ultimo in sqlite, ed è per questo che ho aperto questa discussione
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 09:35:06 AM
Quote from: marcoaureliocommodo on February 02, 2012, 09:26:10 AM
scusate, ma la faccenda è molto complicata per me, io non sono un grande esperto...
Beh, nemmeno io, provo fino a quando le cose non funzionano...
Un esperto è solo uno che ha provato molte cose.

Devo trovare devo ho l'installazione con sqlite. Abbi pazienza.

Quote from: marcoaureliocommodo on February 02, 2012, 09:26:10 AM
ps: il mio obbiettivo sarebbe quello di trasferire un forum con db mysql e trasferirlo identico sia come file sia come contenuto del database cambiando però quest'ultimo in sqlite, ed è per questo che ho aperto questa discussione
...beh, è il titolo della discussione ed è quello che sto cercando di farti fare... ;)
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 10:22:41 AM
Premessa: parto dal presupposto che tu abbia fatto già la procedura d'installazione di SMF usando SQlite e che hai già caricato e accedi correttamente a sqlite manager.

Altra premessa: fai due export del tuo precedente database. Uno come l'hai già fatto, il secondo spunta l'opzione "aggiungi DROP TABLE/VIEW/PROCEDRE/ecc." e ripeti l'export.

Ultima premessa: non ho mai detto che migrare a sqlite sarebbe stato facile. Non difficilissimo forse, ma di sicuro non ho mai detto "facile".

Allora:
1) nella prima pagina appena sqlite manager, ti chiede un file, corretto? C'è "name", "version", "path".
2) In name puoi mettergli sostanzialmente quello che vuoi.
3) In version...devo dire: boh. Lascia 2.
4) In path, metti la stessa path che hai messo durante l'installazione di SMF (sarà qualcosa tipo /var/www/tuosito/smf) ed in più gli aggiungi "/nome_del_database.db" dove "nome_del_database" è il nome che hai impostato al database durante l'installazione di SMF (ma forse questo lo fa in automatico, quindi accederai via ftp, e, nella directory di SMF cercherai un file con estensione ".db" ed userai il nome di quel file).
5) A questo punto premi "save" e verrai portato all'interno del database, dove vedrai le tabelle di smf.

Nota: non son sicuro tu possa importare tutto pari pari senza cancellare qualcosa, quindi come precauzione, intanto che stai guardando il nome del file (al punto 4), scaricatelo sul tu computer così ne hai una copia...male non fa, al massimo poi la cancelli.

A questo punto, se hai scaricato l'export del tuo database come zip, decomprimilo.
Sempre in sqlite manager vai in SQL (menù in alto) e dove c'è "choose file" vai a cercare il tuo file sql (quello del secondo export, con "drop table/ecc").
Qui ci può essere un inghippo: sel il file è troppo grosso il server potrebbe non accettarlo. In tal caso ti toccherà spezzettarlo. Puoi farlo a mano, oppure puoi usare questo programmino: http://www.sqldumpsplitter.com/
Una volta spezzettato dovrai ripetere la procedura di caricamento per tutti i file risultanti.

Finito questo potrai caricare tutti i file del tuo vecchio forum sopra a quelli della nuova installazione ad eccezione di Settings.php!
Ed il "gioco" dovrebbe essere fatto.
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 12:02:10 PM
quando premo salva non va...

mettiamo che io ho chiamato il mio export del database a.sql e voglio chiamare il database del nuovo forum "b" come devo fare?
nella path che devo inserire?quale nome del database?a.sql o b? (sto hostando un mio forum di prova su xampp)

ho provato in seguito a caricare il file .sql e sulla casella path mi veniva una directory C:/fakepath\my_forumprova.sql, poi ho provato a salvare ma mi dice che nel file che ho caricato non c'è niente (ho caricato in path il database esportato la prima volta, quello senza droit ecc...)
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 01:04:43 PM
Quote from: emanuele on February 01, 2012, 05:55:52 PM
Carichi SMF e fai l'installazione usando SQlite come database.

Detto in altre parole devi caricare un altro pacchetto d'installazione di SMF in una directory diversa da quella in cui ce l'hai già, e devi ripetere la prcedura d'installazione di SMF indicando che vuoi usare SQlite invece di MySQL (durante l'installazione!) allora SMF ti creerà un file smf_few3423uj.db (ovviamente il nome NON sarà questo ma un altro univoco e casuale) che sarà quello che poi dovrai indicare a sqlite mqnqger.
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 01:46:46 PM
mi da lo stesso errore. Il mio database sqlite del forum "nuovo" (quello con il database sbagliato) si chiama smf_8a89bf4630.db

io ho inserito su name "dbforum" su version 2 e su path /var/www/my_community/smf/smf_8a89bf4630.db   dato che ho lasciato come nome del forum, quello di default
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 02:18:51 PM
Ma non hai detto che stai usando WAMP?
Allora la path non può essere /var/qualcosa.
La path è il percorso fisico in cui si trova il tuo file, quello che tu usi per accedere al file da esplora risorse, quindi non so C:\wamp\smf\smf_faffe3e.db
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 04:07:00 PM
mi da un errore già alla prima linea

quando premo execute per caricare il secondo export (quello del droit ecc...)

Error line(s) : 1
Error :   SQL logic error or missing database
    near "SET": syntax error
Query :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 02, 2012, 04:21:28 PM
Apri il file con un editor di testo (non word, notepad++ o similari ti sconsiglio il notepad di windows perché ci impiegherebbe una vita), e cancella quella riga.

O meglio edtto quel pezzo di testo:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

E' possibile che poi ci sia anche altro da cancellare...
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 02, 2012, 04:24:02 PM
ho cancellato quella riga e mi da questo errore Error line(s) : 1
Error :   SQL logic error or missing database
    unrecognized token: "`"
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 03, 2012, 05:14:00 AM
Attenzione perché magari durante l'export ogni riga conteneva più di un'istruzione e magari istruzioni spezzettate su più righe, ad esempio:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; DROP `smf_attachments`; CREATE TABLE
`smf_attachments`;

ecc.

Fati attenzione ad aver cancellato solo la stringa
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
e nient'altro.

Casomai posta le prime due o tre righe (non dovrebbero esserci dati sensibili tipo indirizzi email o nomi).

Ah, se posti qualcosa assicurati di metterlo all'interno dei tag [code][/code], così che mantenga la formattazione e non venga alterato da SMF. ;)
Title: Re: convertire database mysql in sqlite
Post by: marcoaureliocommodo on February 03, 2012, 01:38:52 PM
ho cancellato solo la riga che c'è scritta sopra ...
questo è il database dopo la cancellazione della riga


-- phpMyAdmin SQL Dump
-- version 2.11.11.3
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generato il: 02 Feb, 2012 at 10:05 PM
-- Versione MySQL: 5.1.58
-- Versione PHP: 5.2.17



/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `my_forumprova`
--

-- --------------------------------------------------------

--
-- Struttura della tabella `smf_admin_info_files`
--

DROP TABLE IF EXISTS `smf_admin_info_files`;
CREATE TABLE IF NOT EXISTS `smf_admin_info_files` (
  `id_file` tinyint(4) unsigned NOT NULL AUTO_INCREMENT,
  `filename` varchar(255) NOT NULL DEFAULT '',
  `path` varchar(255) NOT NULL DEFAULT '',
  `parameters` varchar(255) NOT NULL DEFAULT '',
  `data` text NOT NULL,
  `filetype` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id_file`),
  KEY `filename` (`filename`(30))
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 03, 2012, 06:22:34 PM
Ok, non avevo considerato le differenza nella struttuda del SQL...
Nota a me stesso: aggiungi tra le cose da fare di scrivere un convertitore.

Guardando la pagina dedicata ai convertitori (http://www.sqlite.org/cvstrac/wiki?p=ConverterTools) sul sito di SQlite, l'unico che parrebbe fare al caso tuo è il primo (ce n'è una versione di prova gratuita per 30 giorni).

C'è anche un'altra possibilità che ho parzialmente provato.
Direi che ti permette di preservare la maggior parte dei dati (di fatto "perderesti" (di un'installazione di default, non posso sapere se ci son di mezzo dati di configurazione di mod) solo i set di smiley, quindi i nomi dei pacchi che comunque si possono anche inserire manualmente in un secondo tempo, alla fine si tratta di una riga), ma dovrebbe comunque consentirti di fare la migrazione...ora è troppo tardi per fare tutti i passaggi, lascio lo screenshot della configurazione dell'export di phpmyadmin così mi ricordo. Il resto domani (se per caso non posto entro domani sera, posta tu un reminder... :))
Title: Re: convertire database mysql in sqlite
Post by: emanuele on February 04, 2012, 02:54:00 PM
Maledizione, importa correttamente i dati, ma ho un problema con i login, non vorrei sia perché ho importato un db della versione finale in un database della RC5 (...l'ultima volta che ho testato SQlite), devo rifare la prova... :(