Version 20 — Février 2013 — olivier
Voir aussi Accéder aux bases SQLite
Installer un SPIP avec SQLite est immédiat : pas besoin de créer une base dans un autre outil, pas besoin de login ni de mot de passe. Cela simplifie l’expérience de la première installation.
La base de données Sqlite est dans un fichier (rangé dans config/bases). Du coup, il est facile de copier ou transporter tout son site : il suffit de copier le répertoire de SPIP pour disposer d’un backup complet de tout le site (fichiers + base) que l’on peut réinstaller autre part.
Mais certains hébergements (mutualisés, tres utilisés) peuvent accepter une installation SQLite (discretement implémentée en MySQL) : bonjour les problèmes !
Sur un hébergement mutualisé, SQLite peut être moins rapide que mySQL, selon la configuration du serveur, en raison des accès disques : sur un mutualisés, les accès aux fichiers sont parfois lents car déportés sur le réseau, or avec sqlite, la base de donnée est dans un fichier. Raisonnement erroné : sur un hébergement mutualisé mySQL est aussi sur un autre serveur et les accès se font par réseau comme pour SQLite. Cela ne change rien en relatif mySQL vs SQLite que l’on soit sur un dédié ou sur un mutualisé. Le raisonnement d’abord porte sur la simultanéité des écritures, impossibles sur UN fichier regroupant toutes les tables de SPIP. (en particulier les tables d’enregistrement des statistiques de visites) et devrait précier le ’volume’ des données transmises entre le serveur du/des fichiers et le serveur Apache embarquant la bibliothèque SQLite.
Le passage de mySQL vers SQLite (via dump SQLite) est simple et sans risque
Si vous avez un site sous mySQL il suffit de faire une sauvegarde depuis le site et de la réimporter dans un site installé avec SQLite. Le passage dans ce sens est généralement très bien supporté et ne pose pas de problèmes.
Le passage de SQLite à mySQL (via un dump SQLite) est problématique
La structure d’une base SQLite est plus pauvre que celle d’une base mySQL et il est difficile de recréer la structure de la base mySQL à partir de celle de SQLite sans risque de bugs ultérieurs.
En attendant que le passage de mySQL à SQLite soit automatiquement pris en charge, il existe une procédure manuelle.
Procédure manuelle pour passer sa base de SQLite à mySQL :
echo ".dump spip_meta" | sqlite3 dump2.sqlite > metadump2.txt
echo "delete from spip_meta where nom='dump_structure_temp';" | sqlite3 dump1.sqlite
sqlite3 dump1.sqlite < metadump2.txt
Cette procédure repose sur le fait que les bases du site 1 et du site 2 ont les mêmes tables avec les mêmes champs. Il faut donc faire bien attention à avoir tous les mêmes plugins installés.
Une gestionnaire de base de données en ligne ? http://www.adminer.org
Un équivalent léger de phpmyadmin pour sqlite, utilisable en local uniquement (mamp, easyphp etc) est un plugin de firefox : sqlite manager et codev, un plugin pour le navigateur chrome
Si on gère son serveur sous Ubuntu, il faut installer sqlite3 et pas sqlite ! ça se fait avec :
sudo pecl install pdo_sqlite
A ce jour c’est toujours un échec ! (13/02/20132)
Posons la structure de départ soit 2 sites spip strictement identique même version( SPIP 3.0.5 [19905] ) , et les mêmes tables avec les mêmes champs ; l’un avec une bdd SQLite, l’autre avec une bdd mySQL.
Le transfert ce fera du site 1 : sqLITE ; vers le site 2 mySQL
- 1° Méthode.
On réalise une sauvegarde SQLite du site 1 via la sauvegarde interne et on réimporte sur le site 2.
-* Résultat <cadre >
Spipfactory soit 2 sites Spip ( spip SQlite & spip mySQL ) avec rigoureusement les même tables
j’ai eu droit lors de la tentative a :
Table spip_abonnes absente
Table spip_abonnes_lettres absente
Table spip_abonnes_rubriques absente
Table spip_abonnes_statistiques absente
Table spip_articles, données manquantes
Table spip_articles_lies absente
Table spip_clics absente
Table spip_desabonnes absente
Table spip_documents, données manquantes
Table spip_lettres absente
Table spip_lettres_statistiques absente
Table spip_mots, données manquantes
Table spip_rubriques, données manquantes
Table spip_rubriques_crontabs absente
Table spip_shoutbox absente
Table spip_syndic, données manquantes
Table spip_themes absente
Table spip_auteurs, données manquantes.
et aucune table de remplie le site est désespérément vide
- 2° Méthode
on utilise le plugin sqlip_export de suske ; Pas trouvé comment on le lance
avec l’aide de François L deplaine (merci)
Pour lancer le téléchargement, le webmestre doit appeler : ../ ->../spip.php ?page=sqlite-mysql
-* Résultat :
Aucune données n’a été reçu en vue de l’importation. Aucun nom de fichier n’a été fourni, ou encore la taille du fichier a dépassé la limite permise par votre configuration de PHP.
-# Import via bigdump dans site 2
-* Résultat :
Bad Request
Your browser sent a request that this server could not understand.
Apache/2.2.17 (Win32) PHP/5.2.17 Server at * Port 80
- 3° Méthode
-* Résultat :
Bad Request
Your browser sent a request that this server could not understand.
Apache/2.2.17 (Win32) PHP/5.2.17 Server at * Port 80
- 4° Méthode
idem a la troisiéme méthode sauf qu’on uvre le fichier SQL et on remplace les doubles quotes (") par ce caractère :
-* Résultat:
Bad Request
Your browser sent a request that this server could not understand.
Apache/2.2.17 (Win32) PHP/5.2.17 Server at * Port 80
- {{5°Méthode}}
on me propose d'utiliser
-* http://stackoverflow.com/questions/1067060/translating-perl-to-python/1070463#1070463
mais je voie pas comment faire ...., tous le monde n'est pas un dev
donc si vous avez une piste, un tuto, une aide
merci
-{{6° Méthode}}
-# on utilise le plugin sqlip_export de suske
-# On ouvre le fichier mysql-dump avec un editeur de texte
-# On Exécute une ou des requêtes sur la base via Phpmyadmin
-* soit un DROP TABLE IF EXISTSspip_syndic_articles
;CREATE TABLE
spip_syndic_articles` (
jusque la prochaine table et on fait ça pour chaque table, j’ai éviter comme ça le
Bad Request
Your browser sent a request that this server could not understand.
Apache/2.2.17 (Win32) PHP/5.2.17 Server at * Port 80
-* Résultat :
echec pour une table spip_syndic_articles, que puis je faire ?? est elle importante on peut s’en passer ?
Erreur
MySQL a répondu : Documentation
#2006 - MySQL server has gone away
je constate également quelques erreurs d’encodage.
- Concept d’utilisabilit ø
au lieu et place de Concept d’utilisabilité
-7° Méthode
tenté d’utiliser le plugin « Migration »
http://www.nursit.com/Le-plugin-migration-pour-SPIP