usuario saber registro not existe exist drop datos create consultar con comprobar mysql database exists

not - saber si existe un registro en mysql php



Cómo comprobar si existe la base de datos mysql (17)

Aquí hay una función de bash para verificar si existe una base de datos:

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 }

Otra alternativa es simplemente tratar de usar la base de datos. Tenga en cuenta que esto también comprueba el permiso:

if mysql "${db}" >/dev/null 2>&1 </dev/null then echo "${db} exists (and I have permission to access it)" else echo "${db} does not exist (or I do not have permission to access it)" fi

¿Es posible verificar si existe una base de datos (MySQL) después de haber realizado una conexión?

Sé cómo verificar si existe una tabla en una base de datos, pero necesito verificar si existe la base de datos. Si no es así, tengo que llamar a otro fragmento de código para crearlo y completarlo.

Sé que todo esto suena un tanto poco elegante: esta es una aplicación rápida y sucia.


Código de carriles:

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'' => []

=> existe el desarrollo de entos, no existe entos_development1


Con este Script puede obtener Sí o No existe la base de datos, en caso de que no exista, no arroja Excepción.

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


De la cáscara como 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


De largo recorrido y enrevesado (¡pero tenga paciencia conmigo!), Aquí hay un sistema de clase que hice para verificar si existe un DB y también para crear las tablas necesarias:

<?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; } }

En esto, puede reemplazar el nombre de la base de datos con el nombre de la base de datos que desee y también cambiar el script del creador a cualquier cosa y (¡con suerte!) No lo romperá. Si alguien puede mejorar esto, hágamelo saber!

Nota
Si no usa Visual Studio con herramientas PHP, no se preocupe por las regiones, son para el plegado de código: P


Estoy usando simplemente la siguiente consulta:

"USE ''DBname''"

A continuación, compruebe si el resultado es FALSO. De lo contrario, podría haber un error de acceso denegado, pero no puedo saberlo. Entonces, en el caso de privilegios involucrados, uno puede usar:

"SHOW DATABASES LIKE ''DBname''"

como ya se mencionó anteriormente.


La siguiente solución funcionó para mí:

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


Otra mejor manera de verificar si existe un dabtabse es:

$mysql = mysql_connect("<your host>", "root", ""); if(mysql_select_db(''<your db name>'', $mysql)){ echo "databse exists"; }else{ echo "Databse does not exists"; }

Ese es el método que siempre uso para verificar si la base de datos existe ...

echo "rate if you enjoy :)";


Para aquellos que usan php con mysqli, esta es mi solución. Sé que la respuesta ya ha sido respondida, pero pensé que sería útil tener la respuesta como una declaración preparada de mysqli también.

$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();


Si está buscando un script php vea más abajo.

$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()); }


Un BASH-one-liner muy simple:

mysqlshow | grep dbname


Una forma sencilla de comprobar si existe una base de datos es:

SHOW DATABASES LIKE ''dbname'';

Si la base de datos con el nombre ''dbname'' no existe, obtendrás un conjunto vacío. Si existe, obtienes una fila.


Utilizando 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


CREATE SCHEMA IF NOT EXISTS `demodb` DEFAULT CHARACTER SET utf8 ;


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

Si está utilizando MSSQL en lugar de MySQL, vea esta respuesta en un hilo similar .


SELECT IF(''database_name'' IN(SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA), 1, 0) AS found;


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

Si solo necesita saber si existe una db para no recibir un error cuando intente crearla, simplemente use (desde here ):

CREATE DATABASE IF NOT EXISTS DBName;