web-dev-qa-db-fra.com

Erreur fatale: PDOException: SQLSTATE [42000] [1049] Base de données inconnue

J'ai un site de développement (site1) et j'en ai créé un second (site2) en utilisant drush, copié sur tous les modules/thèmes et le développement continu. Les deux fonctionnaient et j'ai continué les mises à jour du module dans les deux. Lorsque je suis revenu sur site1, j'ai trouvé un message d'erreur comme suit:

PDOException: SQLSTATE [42000] [1049] Base de données inconnue 'mydevelopmentDB' dans lock_may_be_available () (ligne 167 de mywebsite/includes/lock.inc).

Il y a des fonctionnalités et des nœuds que j'aimerais utiliser dans site2 mais je ne peux pas y accéder. J'ai donc créé un nouveau site (site3) à l'aide de drush, copié les modules et thèmes contribués de site2 et importé la base de données de site1 dans site3, uniquement pour obtenir le même message d'erreur que de site1.

D'après ce que j'interprète, la situation, les fichiers de base et les modules de contribution dans site3 devraient être bons, le noyau est une nouvelle copie et les modules de contribution sont extraits de site2, qui fonctionne bien. Les fichiers settings.php sont identiques, sauf que les paramètres de la base de données, du nom d'utilisateur et du mot de passe correspondent au nom de la base de données individuelle. La seule différence est la base de données elle-même. Quelqu'un peut-il aider à identifier les tables susceptibles d'avoir un paramètre susceptible de provoquer ce problème?

4
Ashlar

Ce n'est pas un problème avec les tables, c'est un problème avec le nom de la base de données.

Drupal se connecte avec succès à votre serveur de base de données, mais il ne trouve pas de base de données portant le nom mydevelopmentDB (qui doit être le nom de la base de données spécifié dans settings.php).

Pour isoler le problème:

  1. Ouvrez PHPMyAdmin pour le serveur en question et exécutez cette requête:

    SELECT * FROM mydevelopmentDB.users
    

    Si vous obtenez une erreur similaire, vous savez que vous avez définitivement le mauvais nom de base de données.

  2. Assurez-vous que le nom de la base de données sur le serveur correspond à case du nom de la base de données dans settings.php. En fonction de vos paramètres MySQL, le serveur peut appliquer ou non la casse aux noms de base de données/tables.
5
Clive