2008-09-20 7 views
4

J'utilise PHPMyAdmi n pour faciliter la mise à jour d'une base de données distante. Par défaut, il ne montre pas d'avertissement qui m'a récemment causé des problèmes embarrassants lorsque je mettais à jour un champ SET avec une chaîne qui ne figurait pas dans sa liste et que je ne remarquais pas le problème.Comment faire en sorte que PHPMyAdmin affiche les avertissements MySQL?

J'utilise 2.11.9.1 (Dreamhost's default install).

Sur le wiki PHPMyAdmin, il répertorie "Afficher les avertissements" comme une caractéristique de version 2.9.0 et même "Afficher tous les avertissements" comme une caractéristique de 2.10.2 - mais comment puis-je l'activer? La documentation n'est pas géniale.

Répondre

0

Je peux me tromper, mais si je me souviens bien, vous devez avoir accès au fichier de configuration de phpMyAdmin pour l'activer.

1

Je ne crois pas que Dreamhost vous donne accès au fichier de configuration pour leur installation de phpMyAdmin. Cependant, vous pouvez facilement créer votre propre installation de phpMyAdmin en téléchargeant la source à partir de their website et en la décochant simplement dans le répertoire auquel vous voulez accéder (votre-domaine.com/phpma par exemple). Ensuite, suivez le website's instructions for editing your config file (qui devrait inclure l'activation des avertissements comme vous l'avez demandé).

0

suivre les instructions du site pour éditer votre fichier de configuration (qui devrait inclure des avertissements permettant que vous avez demandé ).

Eh bien oui, il le devrait. Mais je ne le vois pas dans le fichier de configuration et je ne le vois pas dans la page à laquelle vous avez un lien. J'ai déjà cherché des informations dans les endroits évidents, croyez-moi.

1

Je cherchais juste la même chose. Lorsque j'ai exécuté INSERTs en utilisant le formulaire standard 'insert' phpMyAdmin, les lignes seraient insérées mais une barre rouge apparaîtrait indiquant les avertissements. Mais quand j'ai fait un insertion en vrac, aucun avertissement n'apparaissait et une barre verte apparaissait à la place en disant simplement le nombre de lignes affectées (vous donnant l'impression que tout s'était bien passé, alors qu'en fait il ne l'aurait pas fait).

J'ai trouvé que je devais envoyer la commande SHOW WARNINGS manuellement. Par exemple, lors de l'exécution de cette requête, j'ai placé les deux instructions dans la boîte de dialogue phpMyAdmin SQL.

INSERT INTO test2 SELECT * FROM test1; 
SHOW WARNINGS; 

Cela a donné une liste d'avertissements comme ce qui suit ...

Level Code Message 
Warning 1265 Data truncated for column 'a' at row 1 
Warning 1265 Data truncated for column 'a' at row 3 
Warning 1265 Data truncated for column 'b' at row 3 
Warning 1366 Incorrect integer value: 'x' for column 'b' at row... 


choses à Remarque:

  • Vous ne pouvez pas exécuter la commande SHOW WARNINGS plus tard, il apparaît vide. Il doit être dans la boîte avec votre requête initiale lorsque vous cliquez sur "Go".C'est parce que MySQL ne contient que les avertissements pour la dernière requête que vous avez exécutée. Chaque fois que vous cliquez sur un lien ou un bouton phpMyAdmin exécute toutes sortes d'autres requêtes sur la base de données et ainsi vos avertissements précédents sont perdus.
  • phpMyAdmin fait pas support montrant plusieurs résultats d'une requête personnalisée. Ce faisant cela comme un script SQL ne pas travail ... (comme la version 3.4.10.1)

    INSERT INTO test2 VALUES ('my text', 'something else'); 
    SHOW WARNINGS; # you won't see the warnings from here 
    INSERT INTO test2 VALUES ('my text', 'something else'); 
    SHOW WARNINGS; 
    

    Bien que la méthode ci-dessus ne fonctionne pas dans phpMyAdmin, il DEVRAIENT fonctionner correctement dans la commande MySQL client de ligne. Alors utilisez-le si vous en avez besoin.

Si vous avez plusieurs inserts et que vous voulez montrer tous les avertissements, vous avez à enchaîner ensemble comme une seule déclaration INSERT. Par exemple:

INSERT INTO test2 VALUES 
('my text', 'something else'), 
('my text', 'something else'); 
SHOW WARNINGS; 
Questions connexes