Итак, у вас есть
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой связи. java.net.ConnectException: соединение отклонено
blockquote>Я цитирую из этот ответ , который также содержит пошаговое руководство по MySQL + JDBC:
Если вы получаете
SQLException: Connection refused
илиConnection timed out
или специфический для MySQLCommunicationsException: Communications link failure
, то это означает, что БД недоступно. Это может иметь одну или несколько из следующих причин:
- IP-адрес или имя хоста в URL-адресе JDBC неверен.
- Имя хоста в URL-адресе JDBC не распознается локальным DNS-сервером.
- Номер порта отсутствует или неверен в URL-адресе JDBC.
- Сервер базы данных недоступен.
- Сервер БД не принимает соединения TCP / IP.
- У сервера БД закончились соединения.
- Что-то между Java и БД блокирует соединения, например брандмауэр или прокси.
Чтобы решить ту или иную, выполните следующие советы:
blockquote>
- Проверьте и проверьте их с помощью
ping
.- Обновите DNS или используйте IP-адрес в URL-адрес JDBC.
- Проверьте его на основе
my.cnf
базы данных MySQL.- Запустите БД.
- Убедитесь, что mysqld запускается без
--skip-networking option
.- Перезапустите БД и исправьте свой код соответственно, чтобы он закрывал соединения в
finally
.- Отключить брандмауэр и / или настроить брандмауэр / прокси, чтобы разрешить / переместите порт.
См. также:
Возможно, что-то вроде этого:
#!/bin/bash
echo Enter Number:
read num
function1() { echo one; }
function2() { echo two; }
case $num in
1)
function$num
;;
2)
function$num
;;
esac
Конечно, нет причин, по которым вы не можете вызвать функцию, имя которой представляет собой комбинацию строкового литерала и переменной:
#!/bin/bash
foo1() { echo 'hello from foo1!'; }
foo2() { echo 'hello from foo2!'; }
foo3() { echo 'hello from foo3!'; }
read -p "Enter a Number (1,2, or 3): " num
if [[ $num = [123] ]]; then # validate input
foo"$num"
fi
foo1
.. foo100
, тогда, я думаю, было бы разумнее проверить допустимое число в этом диапазоне (или, скорее, на переосмыслить общий подход). Для основного случая в вопросе я думаю, что = [123]
лучше, чем ваше регулярное выражение (а если вы были i>, чтобы использовать регулярное выражение, я бы предложил =~ ^[1-3]$
).
– Tom Fenech
13 July 2018 в 15:05
1|2) function$num ;;
:) – PesaThe 13 July 2018 в 17:19