Я пытаюсь написать сценарий, который позволяет пользователю выбирать, какие манипуляции ему нужно делать на столе. Я хочу проверить, существует ли таблица. Если он существует, я продолжу другие дела, иначе я выйду, сказав, что таблица не существует. Как я могу этого добиться.
if [ $(mysql -N -s -u root -p -e \
"select count(*) from information_schema.tables where \
table_schema='db_name' and table_name='table_name';") -eq 1 ]; then
do something
else
echo "table <table_name> does not exist"
exit 1
fi
-N
пропустить имена столбцов-s
для нетабулярного выводаВ MySQL вы можете использовать -e из оболочки
mysql -e "desc main_db.clients" > /dev/null 2>&1
echo $?
Если вам нужен метод, который не включает запуск клиента mysql и вход на сервер mysql, вы можете сделать это:
if ls -l /var/lib/mysql/database/table.frm 2> /dev/null > /dev/null
then
echo Table exists
else
echo Table does not exist
fi
Вам нужно будет заменить путь к вашему каталогу данных, имя вашей базы данных и имя вашей таблицы в первой строке.
Предостережения:
Это не так надежно, как другие методы, представленные уже по причинам, указанным выше, но он позволяет избежать клиента mysql, поэтому он все еще может быть полезным.
Обратите внимание, что все методы, представленные здесь, зависят от правильности получения вами собственных разрешений (файловой системы или MySQL). Если вы ошиблись, скорее всего, вы получите ложноотрицательный результат.