Bonjour,
J'ai créé une bdd dont les tables sont préfixées avec aa_ , je voudrais changer ce prefixe en ab_, comment faire ? sois avec une requete, soit avec phpmyadmin..
Merci
Version imprimable
Bonjour,
J'ai créé une bdd dont les tables sont préfixées avec aa_ , je voudrais changer ce prefixe en ab_, comment faire ? sois avec une requete, soit avec phpmyadmin..
Merci
Bonjour,
Voici, d'après la doc, la commande pour changer le nom d'une base :
EDIT : Fausse alerte, cette commande est désormais supprimée de MySQL pour raison de sécurité.Code:RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
J'ai finalement trouvé :
- Ouvre phpmyadmin
- Clic sur ta BDD
- Onglet opérations
- Changer le nom de la base de données pour : <nouveau nom>
- Exécuter
dans phpmyadmin il y a dans operation le moyen de changer le nom de la bdd..mais pas de changer le prefixe...par ailleurs j'ai trouvé ceci :
mais je ne sais pas comment m'en servir (ou le mettre, comment l'executer..)Citation:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?php /* */ /* Titre : modifier en masse le préfixe du nom de tables mysql */ /* */ /* Auteur : forty */ /* Date édition : 19 Sept 2008 */ /* */ $sql_serveur = "à renseigner"; // Serveur mySQL $sql_base = "à renseigner"; // Base de données mySQL $sql_login = "à renseigner"; // Login de connection a mySQL $sql_password = "à renseigner"; // Mot de passe pour mySQL $prefix_old = 'forum_'; $prefix_new = 'forum__'; $lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) or die(mysql_error ()); @mysql_select_db($sql_base, $lk) or die(mysql_error()); $q = mysql_query("SHOW TABLES LIKE '" . $prefix_old . "%'", $lk) or die( mysql_error()); while (($r = mysql_fetch_row($q)) !== false) { $new_name = $prefix_new . substr($r[0], strlen($prefix_old)); mysql_query("RENAME TABLE `" . $r[0] . "` TO `" . $new_name . "` ;", $lk) or die(mysql_error()); echo $r[0] . ' => ' . $new_name . "<br>\n"; } ?>
Il suffit de mettre ce script à la base de ton site, puis de lancer ta page :
tonsite.fr/tonscript.php
j'essaye la méthode du script mais je suis sur un drupal multisite..je voudrais changer le prefixe des tables de la BDD d'un sous-site...donc dans drupal il faut créer des dossier pour les sous-sites comme ceci :
sites/sous-site1
sites/sous-site2
etc...
j'ai mis mon fichier php dans sous-site1, auquel j'accede par un virtual host, ainsi j'ai tapé sous-site1.dev/monscript.php mais rien en se passe..
avant j'ai importé une bdd avec des tables préfixées aa_, dans le fichier settings j'ai indiqué que les tables doivent etre préfixées avec ab_.. peut etre que le problème vient de la ?
Je n'ai jamais utilisé Drupal donc je ne sais pas trop comment t'aider.
En tout cas j'aurais placé le script au même endroit.
Essaye de changer dans les settings et de remettre aa_, ça peut venir de la.
Sinon, dans ton script php, essaye de mettre :
Si rien ne s'affiche, l'erreur ne vient donc pas du script mais de la façon dont il est appelé.Code:echo "test";
yes ça marche...en fait il faut mettre le script à la racine drupal, et renseigner les infos dans le script, nom bdd, hote,mdp...
opération réussie...
Content que tu aies réussi, bonne journée :).
Tout allait bien, mais je me retrouve avec une erreur pour lancer le script :
pourtant rien de spécial à signaler sur mon serveur local au niveau des droits, comment savoir ce qui bloque ? Est-il possible de lancer ce script via un terminal ssh ? Si oui, comment ?Code:Can't connect to MySQL server on '192.168.xxx.xxx' (111)
Merci
finalement résolu avec :
et en changeant l'adresse du serveur par localhostCitation:
drush php-script monscript.php
Le plus simple est de faire un search and replace dans un dump de la db avec un editeur type notepad++ sous windows ou fraise sous MacOS.
Nheo_
Il y a une solution avec le site https://code.visualstudio.com/ à télécharger:)
Quand les choses sont faites correctement :
- la base de données est modélisée grâce à un logiciel de modélisation qui génère automatiquement le script DDL à partir du MCD, après avoir choisi la base de données sous-jacente ;
- l'application n'accède jamais directement aux tables, mais toujours à des vues.
Quand ces deux règles sont respectées, renommer les tables est une opération centralisée dans l'outil de modélisation et indolore pour l'application :)