mysqladmin -uroot create foo
повертає статус виходу 1, якщо він foo
існує, і 0 в іншому випадку, але, звичайно, він також створить базу даних, якщо вона ще не існує. Чи існує якийсь простий спосіб просто перевірити, чи існує база даних?
mysqladmin -uroot create foo
повертає статус виходу 1, якщо він foo
існує, і 0 в іншому випадку, але, звичайно, він також створить базу даних, якщо вона ще не існує. Чи існує якийсь простий спосіб просто перевірити, чи існує база даних?
Відповіді:
Я усвідомлюю, що на це відповіли давно, але мені здається набагато чистішим:
mysql -u root -e 'use mydbname'
Якщо база даних існує, це не призведе до виводу та виходу із поверненням коду == 0.
Якщо база даних не існує, це створить повідомлення про помилку на stderr та вийде із поверненням коду == 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
.
Бази даних у MySQL - це папки у файловій системі. Це робить чорт легко зрозуміти, чи існує база даних:
test -d "/var/lib/mysql/databasename"
У цьому випадку /var/lib
є datadir MySQL. Приємно в цьому фрагменті те, що він не потребує запуску демона MySQL, а також не потрібні облікові дані. Звичайно, користувачеві, який виконує команду, слід дозволити спуститися в цей каталог.
З 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, а не нульовим в іншому випадку.
Звичайно, ви можете перенаправити будь-який результат на /dev/null
необхідність
PS. Цей метод дуже корисний для перевірки стану ефемерних сховищ, які так швидко і популярні в наші дні. Якщо базу даних неможливо підключити, слід почати відновлення як можна швидше.