Comment vérifier si la firebase database mysql existe

Est-il possible de vérifier si une firebase database (MySQL) existe après avoir établi une connexion.

Je sais comment vérifier si une table existe dans une firebase database, mais je dois vérifier si la firebase database existe. Sinon, je dois appeler un autre morceau de code pour le créer et le remplir.

Je sais que tout cela semble quelque peu inélégant – c’est une application rapide et sale.

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName' 

Si vous avez juste besoin de savoir si une firebase database existe pour ne pas avoir d’erreur lorsque vous essayez de la créer, utilisez simplement (D’ ici ):

 CREATE DATABASE IF NOT EXISTS DBName; 

Un moyen simple de vérifier si une firebase database existe est:

 SHOW DATABASES LIKE 'dbname'; 

Si la firebase database avec le nom ‘dbname’ n’existe pas, vous obtenez un ensemble vide. S’il existe, vous obtenez une ligne.

Si vous cherchez un script PHP, voir ci-dessous.

 $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Not connected : ' . mysql_error()); } // make foo the current db $db_selected = mysql_select_db('foo', $link); if (!$db_selected) { die ('Cannot use foo : ' . mysql_error()); } 

De la coquille comme bash

 if [[ ! -z "`mysql -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='db'" 2>&1`" ]]; then echo "DATABASE ALREADY EXISTS" else echo "DATABASE DOES NOT EXIST" fi 

Voici une fonction bash pour vérifier si une firebase database existe:

 function does_db_exist { local db="${1}" local output=$(mysql -s -N -e "SELECT schema_name FROM information_schema.schemata WHERE schema_name = '${db}'" information_schema) if [[ -z "${output}" ]]; then return 1 # does not exist else return 0 # exists fi } 

Une autre alternative est d’essayer simplement d’utiliser la firebase database. Notez que cela vérifie également la permission:

 if mysql "${db}" >/dev/null 2>&1  

Une autre meilleure façon de vérifier si un dabtabse existe est:

 $mysql = mysql_connect("", "root", ""); if(mysql_select_db('', $mysql)){ echo "databse exists"; }else{ echo "Databse does not exists"; } 

C’est la méthode que j’utilise toujours pour vérifier si la firebase database existe …

 echo "rate if you enjoy :)"; 
 CREATE SCHEMA IF NOT EXISTS `demodb` DEFAULT CHARACTER SET utf8 ; 
 SELECT IF('database_name' IN(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA), 1, 0) AS found; 

Pour ceux qui utilisent php avec mysqli, voici ma solution. Je sais que la réponse a déjà été répondue, mais j’ai pensé qu’il serait utile d’avoir la réponse sous la forme d’une déclaration préparée par mysqli.

 $db = new mysqli('localhost',username,password); $database="somedatabase"; $query="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?"; $stmt = $db->prepare($query); $stmt->bind_param('s',$database); $stmt->execute(); $stmt->bind_result($data); if($stmt->fetch()) { echo "Database exists."; } else { echo"Database does not exist!!!"; } $stmt->close(); 

Utiliser bash:

 if [ "`mysql -u'USER' -p'PASSWORD' -se'USE $DATABASE_NAME;' 2>&1`" == "" ]; then echo $DATABASE_NAME exist else echo $DATABASE_NAME doesn't exist fi 

Un BASH-one-liner très simple:

 mysqlshow | grep dbname 
 IF EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = N'YourDatabaseName') BEGIN -- Database exists, so do your stuff here. END 

Si vous utilisez MSSQL au lieu de MySQL, voyez cette réponse à partir d’un thread similaire .

Très long et compliqué (mais avec moi!), Voici un système de classes que j’ai fait pour vérifier si un DB existe et aussi pour créer les tables nécessaires:

 < ?php class Table { public static function Script() { return " CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT ); "; } } class Install { #region Private constructor private static $link; private function __construct() { static::$link = new mysqli(); static::$link->real_connect("localhost", "username", "password"); } #endregion #region Instantiator private static $instance; public static function Instance() { static::$instance = (null === static::$instance ? new self() : static::$instance); return static::$instance; } #endregion #region Start Install private static $installed; public function Start() { var_dump(static::$installed); if (!static::$installed) { if (!static::$link->select_db("en")) { static::$link->query("CREATE DATABASE `en`;")? $die = false: $die = true; if ($die) return false; static::$link->select_db("en"); } else { static::$link->select_db("en"); } return static::$installed = static::DatabaseMade(); } else { return static::$installed; } } #endregion #region Table creator private static function CreateTables() { $tablescript = Table::Script(); return static::$link->multi_query($tablescript) ? true : false; } #endregion private static function DatabaseMade() { $created = static::CreateTables(); if ($created) { static::$installed = true; } else { static::$installed = false; } return $created; } } 

Dans ce cas, vous pouvez remplacer le nom de la firebase database par n’importe quel nom de firebase database que vous souhaitez et changer le script de création en n’importe quoi et (espérons-le!) Il ne le cassera pas. Si quelqu’un peut améliorer cela, faites le moi savoir!

Remarque
Si vous n’utilisez pas Visual Studio avec les outils PHP, ne vous inquiétez pas pour les régions, elles servent à plier le code: P

Code Rails:

 ruby-1.9.2-p290 :099 > ActiveRecord::Base.connection.execute("USE INFORMATION_SCHEMA") ruby-1.9.2-p290 :099 > ActiveRecord::Base.connection.execute("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'entos_development'").to_a SQL (0.2ms) SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'entos_development' => [["entos_development"]] ruby-1.9.2-p290 :100 > ActiveRecord::Base.connection.execute("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'entos_development1'").to_a SQL (0.3ms) SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'entos_development1' => [] 

=> entos_development existe, entos_development1 n’existe pas

La solution suivante a fonctionné pour moi:

 mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} \ -s -N -e "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_DATABASE}'" 

J’utilise simplement la requête suivante:

 "USE 'DBname'" 

Ensuite, vérifiez si le résultat est FALSE. Sinon, il pourrait y avoir une erreur d’access refusé, mais je ne peux pas le savoir. Ainsi, en cas de privilèges impliqués, on peut utiliser:

 "SHOW DATABASES LIKE 'DBname'" 

comme déjà mentionné précédemment.

Avec ce script, vous pouvez obtenir Oui ou Aucune firebase database n’existe, au cas où elle n’existe pas, elle ne lance pas d’exception.

 SELECT IF(EXISTS( SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DbName'), 'Yes', 'No') as exist