<?xml version="1.0"?>
<rss xmlns:php="http://php.net/xsl" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Renommer une base MySQL - Chicoree</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL</link><atom:link href="http://www.chicoree.fr/w/Renommer_une_base_MySQL?action=toFeed" rel="self" type="application/rss+xml"/><description><![CDATA[
Il vous est sans doute déjà arrivé de devoir renommer une base de données. Par exemple, parce que vous constatez après l'avoir créée que vous vous êtes trompé dans son nom. Ou parce qu'au cours du développement votre base a évolué et que son nom ne reflète plus la réalité de votre projet. Ou pour plein d'autres raisons qui vous sont personnelles…
Malheureusement, MySQL ne supporte pas la commande ALTER DATABASE ... RENAME TO ... Mais il existe d'autres solutions. Afin de vous aider, cet article présente non pas une mais quatre techniques – enfin trois sérieuses et une à éviter – pour renommer une base MySQL. Ces possibilités sont présentées ci-dessous par ordre de préférence décroissant. Et bien entendu, ce qui est valable pour MySQL l'est aussi pour MariaDB…
]]></description><item><title>1 À privilégier: utiliser une sauvegarde</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#.C3.80_privil.C3.A9gier:_utiliser_une_sauvegarde</link><description><![CDATA[<p>Cette technique a pour avantage de fonctionner quel que soit le type de vos tables (y compris <i>InnoDB</i>) <i>et</i> d'être utilisable en toute sécurité sur une base de donnée <i>live</i>. Si vous faites ce dernier choix cependant, il faut avoir conscience que les modifications effectuées après le début de la procédure ne seront sans doute pas présentes dans la base copiée. Mais au moins cela vous permet de conserver la base accessible en <i>lecture</i> pendant la transition.
</p>]]></description></item><item><title>2 À envisager: RENAME TABLE ... TO</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#.C3.80_envisager:_RENAME_TABLE_..._TO</link><description><![CDATA[<p>Si passer par un <i>dump</i> comme expliqué ci-dessus ne vous convient pas, il existe une autre technique utilisable aussi bien avec des tables <i>(My)ISAM</i> que <i>InnoDB</i> – y compris utilisant <a>les contraintes d'intégrité référentielle</a>.
</p>]]></description></item><item><title>3 À défaut: renommer le dossier contenant la base</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#.C3.80_d.C3.A9faut:_renommer_le_dossier_contenant_la_base</link><description><![CDATA[<p>Cette troisièle technique prend une approche radicalement différente, puisqu'elle consiste à renommer sur le disque le dossier contenant les fichiers de la base de données. Cette option n'est à utiliser que:
</p>]]></description></item><item><title>3.1 Qu'est-ce qu'une base MySQL?</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#Qu.27est-ce_qu.27une_base_MySQL.3F</link><description><![CDATA[<p>Sur le disque, une base de données MySQL, n'est rien de plus qu'une collection de fichiers stockés dans un dossier <a>[2]</a>. Selon votre système d'exploitation et la manière dont vous avez installé MySQL, l'emplacement de ce dossier varie. Par exemple, sous Debian/Lenny – avec MySQL5 installé à partir des paquets, les bases sont dans <tt>/var/lib/mysql</tt>. Une recherche sur votre disque dur devrait vous permettre de trouver sans trop de difficulté l'emplacement correspondant à <i>votre</i> installation.
</p>]]></description></item><item><title>3.1.1 Côte mysql</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#C.C3.B4te_mysql</link><description><![CDATA[<p>Afin d'examiner de plus près le contenu de ce dossier, nous allons nous appuyer sur un exemple:
</p>]]></description></item><item><title>3.1.2 Sur le disque</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#Sur_le_disque</link><description><![CDATA[<p>Allons voir maintenant dans <tt>/var/lib/mysql</tt> (ou l'emplacement correspondant sur votre système) ce qui s'est passé suite aux opérations effectuées précédemment:
</p>]]></description></item><item><title>3.2 Renommer la base/le dossier</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#Renommer_la_base.2Fle_dossier</link><description><![CDATA[<p>Les manipulations précédentes avaient pour but d'illustrer ce qui est expliqué dans la documentation de MySQL – à savoir qu'<em>une base MySQL correspond à un dossier</em>. Du coup, on comprend qu'<em>il est possible de renommer une base MySQL simplement en renommant le dossier qu'elle contient</em>:
</p>]]></description></item><item><title>4 À ne jamais faire: utiliser la commande RENAME DATABASE</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#.C3.80_ne_jamais_faire:_utiliser_la_commande_RENAME_DATABASE</link><description><![CDATA[<p>Entre MySQL 5.1.7 et MySQL 5.1.23 il a existé une commande <i>RENAME DATABASE</i>. Celle-ci a été supprimée car elle pouvait entrainer des pertes de données. Pour paraphraser la documentation officielle de MySQL, <i>même si elle est disponible dans votre version de MySQL, n'utilisez <b>jamais</b> cette commande</i>.
</p>]]></description></item><item><title>5 À ne pas oublier: ajuster les permissions</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#.C3.80_ne_pas_oublier:_ajuster_les_permissions</link><description><![CDATA[<p>Que vous ayez renommé votre base en passant par un <i>blackup</i>, en déplaçant les tables ou en modifiant <i>sauvagement</i> le nom de dossiers, il vous reste une étape avant de terminer: ajuster les permissions de la <i>nouvelle</i> base. Là, deux écoles. Avec toutes deux leurs défauts:
</p>]]></description></item><item><title>6 Ressource</title><link>http://www.chicoree.fr/w/Renommer_une_base_MySQL#Ressource</link><description><![CDATA[<p>Des solutions alternatives:
</p>]]></description></item></channel></rss>
