mysqladmin -uroot create foo
foo
存在する場合は1の終了ステータスを返し、存在しない場合は0を返しますが、データベースが存在しない場合はもちろん作成します。データベースが存在するかどうかを簡単に確認する簡単な方法はありますか?
mysqladmin -uroot create foo
foo
存在する場合は1の終了ステータスを返し、存在しない場合は0を返しますが、データベースが存在しない場合はもちろん作成します。データベースが存在するかどうかを簡単に確認する簡単な方法はありますか?
回答:
私はこれがかなり前に回答されたことを理解していますが、これを行う方がはるかにきれいに思えます:
mysql -u root -e 'use mydbname'
データベースが存在する場合、これは出力を生成せず、リターンコード== 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)を試行して、選択したデータベースにexit
すぐに接続します。したがって、接続が正常であれば、終了コードは0になり、そうでない場合はゼロ以外になります。
もちろん、/dev/null
必要に応じて出力をリダイレクトできます
PS。この方法は、現在非常に高速で人気のある一時的なストレージの状態を確認するのに非常に便利です。データベースに接続できない場合は、できるだけ早く復元を開始する必要があります。