Carnet Wiki

Passage de SQLite à MySQL

Depuis juin 2022, la méthode recommandée et celle qui est la plus récente de toutes : utiliser la commande SPIP-Cli codée par Cédric exprès pour ça et disponible sur
https://git.spip.net/spip-contrib-o...

Tout le reste est déprécié.

Syntaxe

D’après
https://git.spip.net/spip-contrib-outils/spip-cli/commit/f78649d4ccfcceec25cfa099e297afdaec93fd13

permet de convertir facilement un site SQLite en MySQL :
-  le script cree la base mysql en se basant sur les declarations des plugins
-  ensuite la structure de la base mysql et la structure de la base sqlite sont comparees
-  les cas connus (champ oembed pas declare, vieux champs extras...) sont repares a la volee
-  pour les autre tables ou champ manquant il faut reactiver les plugins necessaires ou les creer a la main, ou les ignorer avec l’option —ignore-missing
-  une fois la structure mysql OK, le script copie toutes les données de sqlite vers mysql
-  et le tour est joué

spip sql:convert:tomysql -h

Description :
Convertit un site vers mysql (utile pour un site en sqlite)

Usage :
sql:convert:tomysql [options]

Options :
—connect[=CONNECT] Le nom du connect MySQL a utiliser
-i, —ignore-missing Ignorer les champs et tables manquantes dans la base MySQL
-h, —help Display help for the given command. When no command is given display help for the list command
-q, —quiet Do not output any message
-V, —version Display this application version
—ansi|—no-ansi Force (or disable —no-ansi) ANSI output
-n, —no-interaction Do not ask any interactive question
-v|vv|vvv, —verbose Increase the verbosity of messages : 1 for normal output, 2 for more verbose output and 3 for debug

Exemple d’utilisation

J’ai un site SPIP dont la base est en SQLite

Pour le passer en SQL via SPIP-Cli
-  j’installe SPIP-Cli
-  je crée ma base SQL spip_toto dans phpMyAdmin par exemple
-  je crée un ficher de connection à cette base. Par ex. config/connect_new.php

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
defined('_MYSQL_SET_SQL_MODE') || define('_MYSQL_SET_SQL_MODE',true);
$GLOBALS['spip_connect_version'] = 0.8;
spip_connect_db('localhost','','root','motdepasse','spip_toto','mysql', 'spip','','utf8');
?>


-  je lance ma commande spip-cli

 spip sql:convert:tomysql --connect=connect_new

Ca marche :)

Ensuite je peux brancher le SQL au lieu de SQLite en renommant config/connect_new.php par config/connect.php

Suske - Mise à jour :22 août 2023 à 13h28min