mysqladmin -uroot create foo
foo
존재하는 경우 종료 상태 1을 리턴하고 그렇지 않으면 0을 리턴 하지만 데이터베이스가 존재하지 않는 경우 데이터베이스도 작성합니다. 데이터베이스가 있는지 간단히 확인할 수있는 쉬운 방법이 있습니까?
mysqladmin -uroot create foo
foo
존재하는 경우 종료 상태 1을 리턴하고 그렇지 않으면 0을 리턴 하지만 데이터베이스가 존재하지 않는 경우 데이터베이스도 작성합니다. 데이터베이스가 있는지 간단히 확인할 수있는 쉬운 방법이 있습니까?
답변:
나는 이것이 오래 전에 답변되었다는 것을 알고 있지만, 이것을하는 것이 훨씬 더 깨끗해 보입니다.
mysql -u root -e 'use mydbname'
데이터베이스가 존재하면 출력이없고 returncode == 0으로 종료됩니다.
데이터베이스 가 존재 하지 않으면 stderr에 오류 메시지가 생성 되고 returncode == 1로 종료됩니다. 따라서 다음과 같이합니다.
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
이것은 셸 스크립트와 잘 작동하며 출력 처리가 필요하지 않으며 로컬 파일 시스템 액세스에 의존하지 않습니다.
mysql -e "SHOW DATABASES LIKE 'foo'"
당신을 도울 것입니다.
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.
에서 http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ 이 내가 원하는 것을 더 가깝다 :
DBNAME="dblookingfor"
DBEXISTS=$(mysql --batch --skip-column-names -e "SHOW DATABASES LIKE '"$DBNAME"';" | grep "$DBNAME" > /dev/null; echo "$?")
if [ $DBEXISTS -eq 0 ];then
echo "A database with the name $DBNAME already exists."
else
echo " database $DBNAME does not exist."
fi
필요한 데이터베이스가 모든 쉘에서 간단한 방식으로 작동하는지 확인할 수 있다고 생각합니다.
mysql -uUSERNAME -pPASSWORD DATABASE -e exit
그런 다음 $?
종료 코드 를 확인하십시오.
이 명령은 특정 자격 증명 (USERNAME 및 PASSWORD)을 시도하여 선택한 DATABASE에 exit
즉시 연결 합니다. 따라서 연결이 정상이면 종료 코드는 0이고 그렇지 않으면 0이 아닙니다.
물론 /dev/null
필요한 경우 모든 출력을 리디렉션 할 수 있습니다
추신. 이 방법은 오늘날 매우 빠르고 인기있는 임시 스토리지의 상태를 확인하는 데 매우 유용합니다. 데이터베이스를 연결할 수 없으면 최대한 빨리 복원을 시작해야합니다.