J'essaie de vérifier si une base de données est connectée à Laravel.
J'ai parcouru la documentation et je ne trouve rien. La chose la plus proche que j'ai trouvée est this , mais cela ne résout pas mon problème.
J'ai trois instances de MySQL configurées sur différentes machines. Vous trouverez ci-dessous une version simplifiée de ce que j'essaie de réaliser.
Pour être clair, existe-t-il un moyen de vérifier qu'une base de données est connectée dans Laravel 5.1?
Essayez simplement d'obtenir l'instance PDO sous-jacente. Si cela échoue, alors Laravel n'a pas pu se connecter à la base de données!
// Test database connection
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration. error:" . $e );
}
Vous pouvez utiliser la solution alexw avec l'Artisan. Exécutez les commandes suivantes dans la ligne de commande.
php artisan tinker
DB::connection()->getPdo();
Si la connexion est correcte, vous devriez voir
CONNECTION_STATUS: "Connexion OK; en attente d'envoi.",
vers la fin de la réponse.
Vous pouvez l'utiliser dans une méthode de contrôleur ou dans une fonction en ligne d'un itinéraire:
try {
DB::connection()->getPdo();
if(DB::connection()->getDatabaseName()){
echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
}else{
die("Could not find the database. Please check your configuration.");
}
} catch (\Exception $e) {
die("Could not open connection to database server. Please check your configuration.");
}
Vous pouvez utiliser cette requête pour vérifier la connexion à la base de données dans laravel:
$pdo = DB::connection()->getPdo();
if($pdo)
{
echo "Connected successfully to database ".DB::connection()->getDatabaseName();
} else {
echo "You are not connected to database";
}
Pour plus d'informations, vous pouvez consulter cette page https://laravel.com/docs/5.0/database .
Lorsque Laravel tente de se connecter à la base de données, si la connexion échoue ou s’il trouve des erreurs, il renvoie une erreur PDOException
. Nous pouvons intercepter cette erreur et rediriger l’action.
Ajoutez le code suivant dans le app/filtes.php
fichier.
App::error(function(PDOException $exception)
{
Log::error("Error connecting to database: ".$exception->getMessage());
return "Error connecting to database";
});
J'espère que c'est utile.