подключите Java к MySQL, используя JDBC на OSX - PullRequest
9 голосов
/ 04 июня 2011

Поэтому я добавил MySQL Connector / J 5.1.16 в путь сборки моего проекта. Я использую стандартный пакет OSX Java и MAMP Pro 1.9.4 с MySQL 5.1.44 и Eclipse.

Я установил простое Java-приложение со следующей функцией:

private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/mpp";
private static String dbUsername = "root";
private static String dbPassword = "root";

private Statement statement = null;

private void dbConnect() {


try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
    statement = connection.createStatement();

} catch(SQLException e) {
    System.err.print(e.getMessage() + " ARGH!");
} catch(Exception e) {
    System.err.print(e.getMessage() + " FUUUUUUUUUU!");
}
}

Когда я запускаю его, я получаю следующую ошибку:

Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ARGH!

Я гуглил и искал около часа безуспешно. Любые идеи о том, как это исправить? Драйвер JDBC должен быть в порядке, я его как бы протестировал.

EDIT

Я попытался запустить это через консоль

SnowCave:src stefanschipor$ java -cp $CLASSPATH test

Я получаю тот же вывод, что и выше

Ответы [ 5 ]

15 голосов
/ 06 июня 2011

ОК, это просто глупо.:)

Вы открыли MAMP, перейдите на Сервер> MySQL и снимите флажок «Разрешить только локальный доступ», который установлен по умолчанию.Это странно, поскольку то, что я делаю, локально, но в любом случае ...

Кажется, моя программа работает, и команды, предложенные @JamesA, также дают ожидаемый результат!

Huzzah!

3 голосов
/ 04 июня 2011

Вы уверены, что MySQL работает на порте 3306?


Если демон MySQL прослушивает порт 3306, то lsof -i :3306 должен вернуть:

COMMAND  PID        USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
mysqld  7616    username   10u  IPv6 0x1fbf6940      0t0  TCP *:mysql (LISTEN)

Прямое подключение к порту с использованием nc localhost 3306 должно вернуть:

H
5.5.969]G.Mw4??9cfUY?k!^:D&mysql_native_password

где 5.5.969 - номер версии mysql.


Вы также можете попробовать такой инструмент, как DbVisualizer , чтобы проверить URL вашего соединения.

1 голос
/ 22 ноября 2017

вам нужно использовать Port localhost: 8889 или любой другой порт, который вы найдете в MAMP> Настройки> Порты> MySQL-Port.Тогда ваше соединение будет успешным!

0 голосов
/ 22 ноября 2018

Это просто потому, что ваша mysql служба не запущена ... просто запустите службу mysql из системных настроек или если вы установили ее с помощью brew run brew services start mysql

0 голосов
/ 04 июня 2011

У меня также есть таинственная ошибка в OSX, и я не нашел никакого решения в первый раз, когда произошла ошибка.В моих случаях это происходит, если структура базы данных была изменена или таблицы были удалены / созданы во время разработки (MySQL как источник данных для JBoss).Во всех случаях я могу избежать ошибки, если после модификаций выключу MySQL и перезапущу его до запуска JBoss.

...