[mysql] MySQL 데이터베이스가 있는지 확인하는 방법

연결 한 후 (MySQL) 데이터베이스가 존재하는지 확인할 수 있습니까?

DB에 테이블이 있는지 확인하는 방법을 알고 있지만 DB가 있는지 확인해야합니다. 그렇지 않으면 다른 코드를 호출하여 작성하고 채울 필요가 있습니다.

나는이 모든 것이 다소 우아하지 않다는 것을 알고 있습니다. 이것은 빠르고 더러운 앱입니다.



답변

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

db가 존재하는지 알아야만 만들 때 오류가 발생하지 않으면 (From here )을 사용 하십시오 .

CREATE DATABASE IF NOT EXISTS DBName;


답변

데이터베이스가 있는지 확인하는 간단한 방법은 다음과 같습니다.

SHOW DATABASES LIKE 'dbname';

이름이 ‘dbname’인 데이터베이스가 존재하지 않으면 빈 세트가 나타납니다. 존재하면 하나의 행을 얻습니다.


답변

PHP 스크립트를 찾고 있다면 아래를 참조하십시오.

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


답변

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


답변

데이터베이스가 존재하는지 확인하기위한 bash 함수는 다음과 같습니다.

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
}           

다른 대안은 데이터베이스를 사용하는 것입니다. 권한도 확인합니다.

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


답변

PHP에 데이터베이스가 있는지 확인하는 좋은 방법은 다음과 같습니다.

$mysql = mysql_connect("<your host>", "root", "");

if (mysql_select_db($mysql, '<your db name>')) {
    echo "Database exists";
} else {
    echo "Database does not exist";
}

그것이 제가 항상 사용하는 방법입니다.


답변

매우 간단한 BASH-one-liner :

mysqlshow | grep dbname