comment ajouter un préfixe à toutes les tables de ma DB locale

Bonjour,

Prenons mon site «site-de-carole» avec ma base «ma_jolie_base» installé et fonctionnant bien en local.
Je passe en prod et l’installe sur un serveur distant
=> ok pour les fichiers de drupal
=> pas ok pour «ma_joli_base»

Sur le serveur distant toutes les tables sont préfixées d’un pénible «dr_» alors que les tables de «ma_jolie_base» n’ont aucun préfixe du coup l’import ne fonctionne pas….

Comment faire pour préfixer toutes les tables de ma base locale préalablement à l’import ?
J’ai trouvé des infos en googlisant mais je ne parle pas le langage des requêtes sql donc j’ai peur de faire une grosse bêtise et puis c’est toujours des cas particuliers (remplacer un prefixe de 3 lettres par un de 4 ou ajouter un prefixe aux tables qui commencent par etc.)

Merci de votre aide,
Carole

#

Hello,

pas besoin de SQL d’aucune sorte.

Le préfixe de la base de données peut se paramétrer dans le fichier settings.php, avec l’attribut prefix.

Exemple :

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'database' => 'ma_jolie_base',
      'username' => 'carole',
      'password' => 'le_mot_de_passe',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => 'dr_',
    ),
  ),
);

#

euh !
J’ai rajouté le dr_ comme préfixe dans le settings.php et lorsque je vais sur mon site j’ai l’erreur suivante.

The website encountered an unexpected error. Please try again later.
Error message
PDOException : SQLSTATE[42S02] : Base table or view not found : 1146 Table ‘ketcophoto.dr_semaphore’ doesn’t exist : SELECT expire, value FROM {semaphore} WHERE name = :name ; Array ( [:name] => variable_init ) in lock_may_be_available() (line 167 of /Applications/XAMPP/xamppfiles/htdocs/drupal/includes/lock.inc).

Le paramétrage que tu m’as indiqué fonctionne t-il pour les bases déjà créées ou juste lors de la création de la base ?
Une fois le paramètre entré, faut il lancer une procédure d’update pour que la base ajoute le préfixe aux noms des tables ???

Je ne veux pas créer une base avec des tables préfixées mais changer le nom de toutes les tables déjà existantes - mon site est déjà développé et j’ai plein de données dans mes tables.

J’ai râté quelque chose ??

#

Bon… voilà comment je m’en suis sortie.
J’ai retourné le problème.
Au lieu de rajouter le préfixe sur mes tables en local, j’ai enlevé celui présent sur la base distante.

J’ai effectué l’import de ma base locale vers le serveur distant et du coup toutes mes tables apparaissaient dans la base du serveur (mais sans préfixe) au côté de celles préalablement créées sur le serveur (et présentant un préfixe).
Je suis allée dans le fichier settings.php sur le serveur distant et je l’ai modifié en supprimant le préfixe (voir post de vincent59) :

‘prefix’ => ’ ‘,

Du coup ma config distante prend en compte les bonnes tables.
Je vais faire quelques tests et si tout est ok (ça l’est pour l’instant) je supprimerai les tables préfixées.

Autre remarques : j’ai dû augmenter la mémoire allouées à php
pour plus d’info voir ici : http://drupal.org/node/207036

Bonne journée à tous ceux qui me liront et merci à vincent59 de m’avoir mis sur la voie.

#

Effectivement, le paramétrage fonctionne juste lors de la création de la base.

Si les tables étaient préfixées, ça aurait fonctionné : dans ce cas Drupal ajoute le préfixe au nom des tables «standard», par exemple la table semaphore devient dr_semaphore

Syndiquer le contenu