Помогите Не подключается БД MySQL

LaoTheLizard

Старожил
Пользователь
Баллы
103
Есть такой код:
Java:
      public static void connect() {
             try {
                  Class.forName("com.mysql.jdbc.Driver");
                  connection = (Connection) DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
              statement = (Statement) connection.createStatement(1004, 1008);
             } catch (Exception e) {
                ruDB.log.warning("[ruDB] No connection!");
                e.printStackTrace();
             }
      }

Не подключается, пишет ошибку:
d5577a2b634773ad08c823a0e15f3592.png


Гуглил - так и не понял, в чем причина.
 
На кодировку ругается. Обчного utf8 не хватаает?

Интересно, зачем эта строчка:
Код:
statement = (Statement) connection.createStatement(1004, 1008);
И упрости свой конфиг. Сделай url в конфиге и станут ненужны деление на хост , порт и базу + гибкости больше.

Я все БД уже конвертировал в utf8_general_ci. Я даже создавал новую БД.
Касаемо строчки - я честно скажу: не знаю. Она стояла в каком-то плагине, всё работало, мне пофиг, но даже если разбираться, то по логам видно, что до этой строчки даже не доходит. Ошибка происходит в момент формирования Connection.

Что касается конфига, я пробовал делать готовую строчку - всё то же самое.
 
Есть такой код:
Java:
      public static void connect() {
             try {
                  Class.forName("com.mysql.jdbc.Driver");
                  connection = (Connection) DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
              statement = (Statement) connection.createStatement(1004, 1008);
             } catch (Exception e) {
                ruDB.log.warning("[ruDB] No connection!");
                e.printStackTrace();
             }
      }

Не подключается, пишет ошибку:
d5577a2b634773ad08c823a0e15f3592.png


Гуглил - так и не понял, в чем причина.
У тебя явно устаревший драйвер MySQL, который еще не поддерживает utf8mb4.
Это драйвер по пути com.mysql.jdbc.... в твоем ядре. (Промолчу про версию ядра)

Попробуй скачать по нужной тебе версии новый:
https://mvnrepository.com/artifact/mysql/mysql-connector-java/6.0.6

Затем добавь все содержимое в твое ядро с заменой файлов.
Перед этим сделай бекап ядра, гарантий что оно идеально заработает нет, но вероятность велика.
 
Читать, как анекдот:

Короче, решил я обновиться до версии 8+. Сбэкапил БД, удалил старую, поставил новую. Старый PHPMyAdmin с новой MySQL не дружит, поставил новый. Новый PHPMyAdmin со старым PHP не дружит. Скачал новый. Новый PHP со старым Apache тоже разругался.
Погуглил чуток и - о, чудо, халва (sic!) небесам, да уродятся финики - узнал, что есть такое чудо распрекрасное, как XAMPP Control Panel. Удалил новый MySQL. Установил последнюю версию XAMPP (кто не знает - это всё-в-одном: Apache+MySQL+PHP+другие_блага), все заработало.
Запустил сервер - ошибка исчезла, коннект случился. Запустил клиент - соединение с БД и авторизация не происходят. Сайт тоже "поломался". И ещё писал сайт другу - тоже "умер". Ну этот-то я сам писал, всё нашёл, всё исправил. А вот сайт был на готовом движке, поковырял я его часа два, исправляя построчно каждый еррор-репорт, да и плюнул. Поставил обратно свою 6.0.6, запустил старый Апач, залил обратно свою БД - и снова все заработало, как годы до этого. Итого - семь часов жизни впустую. 🙂

Сижу и думаю: неужели труднее и сложнее будет решить проблему коннекта, чем всё это переделать чуть ли не с нуля? Такие дела.
 
Читать, как анекдот:

Короче, решил я обновиться до версии 8+. Сбэкапил БД, удалил старую, поставил новую. Старый PHPMyAdmin с новой MySQL не дружит, поставил новый. Новый PHPMyAdmin со старым PHP не дружит. Скачал новый. Новый PHP со старым Apache тоже разругался.
Погуглил чуток и - о, чудо, халва (sic!) небесам, да уродятся финики - узнал, что есть такое чудо распрекрасное, как XAMPP Control Panel. Удалил новый MySQL. Установил последнюю версию XAMPP (кто не знает - это всё-в-одном: Apache+MySQL+PHP+другие_блага), все заработало.
Запустил сервер - ошибка исчезла, коннект случился. Запустил клиент - соединение с БД и авторизация не происходят. Сайт тоже "поломался". И ещё писал сайт другу - тоже "умер". Ну этот-то я сам писал, всё нашёл, всё исправил. А вот сайт был на готовом движке, поковырял я его часа два, исправляя построчно каждый еррор-репорт, да и плюнул. Поставил обратно свою 6.0.6, запустил старый Апач, залил обратно свою БД - и снова все заработало, как годы до этого. Итого - семь часов жизни впустую. 🙂

Сижу и думаю: неужели труднее и сложнее будет решить проблему коннекта, чем всё это переделать чуть ли не с нуля? Такие дела.
А всего то надо было обновить jdbc. Сам виноват.
 
А всего то надо было обновить jdbc. Сам виноват.

В папке сервера (Cauldron 1.7.10) по пути libraries/mysql/mysql-connector-java/5.1.14/ лежит файл mysql-connector-java-5.1.14.jar
В папке lib лежит файл mysql.jar

Как обновить jdbc, я не понял, честно. Подскажешь - буду благодарен.
 
В папке сервера (Cauldron 1.7.10) по пути libraries/mysql/mysql-connector-java/5.1.14/ лежит файл mysql-connector-java-5.1.14.jar
В папке lib лежит файл mysql.jar

Как обновить jdbc, я не понял, честно. Подскажешь - буду благодарен.
Качаешь новый и заменяешь старый. Капец как сложно.
 
Качаешь новый и заменяешь старый. Капец как сложно.
Ну я так и делал уже ранее. Скачал версию 6.0.6. И куда её девать? Я попробовал создать папку 6.0.6 и положить туда под аналогичным именем - не помогло. Попробовал заменить имеющуюся 5.1.14 на 6.0.6, переименовав - не помогло. Попробовал просто удалить всю папку 5.1.14 - тогда оно начало писать ClassNotFound. Я не понимаю, что нужно сделать, честно.
 
Как это вообще работает, я не пойму? Я прочесал Cauldron - в нём вроде нигде не встречается ссылка на эту папку. Как он находит этот класс? Почему я подставляю другой класс, в котором есть тот же класс "com.mysql.jdbc.Driver", но он его не видит?
 
Ну я так и делал уже ранее. Скачал версию 6.0.6. И куда её девать? Я попробовал создать папку 6.0.6 и положить туда под аналогичным именем - не помогло. Попробовал заменить имеющуюся 5.1.14 на 6.0.6, переименовав - не помогло. Попробовал просто удалить всю папку 5.1.14 - тогда оно начало писать ClassNotFound. Я не понимаю, что нужно сделать, честно.
Тебе чем мой первый ответ не помог?
 
Тебе чем мой первый ответ не помог?
Если бы ты прочитал всё, что было написано после твоего первого ответа, ты бы увидел, что я нашел, где лежит этот драйвер у меня. И понял бы, что я уже пытался разными способами его заменить с версии 5.1.14 на версию 6.0.6. И понял бы, что ни один из способов не подошёл и суть моего вопроса в этой теме в том, чтобы объяснить мне, как мне его там подменить (проапгрейдить), чтобы эта хренотень, наконец, заработала. 🙂
 
Ну я так и делал уже ранее. Скачал версию 6.0.6. И куда её девать? Я попробовал создать папку 6.0.6 и положить туда под аналогичным именем - не помогло. Попробовал заменить имеющуюся 5.1.14 на 6.0.6, переименовав - не помогло. Попробовал просто удалить всю папку 5.1.14 - тогда оно начало писать ClassNotFound. Я не понимаю, что нужно сделать, честно.
А что не работает если ты закинешь в папку 5.1.14 файлы с 6.0.6 с заменой?
 
Копипаст с тем же названием. Ипать ты долбан. И там последняя версия 8.0.16 если че.
А что не работает если ты закинешь в папку 5.1.14 файлы с 6.0.6 с заменой?
Ещё раз рассказываю. Брал файл 6.0.6 и заменял им файл 5.1.14. Пробовал и с переименованием и без. И в отдельной папке с названием 6.0.6 тоже пробовал на всякий случай.
 
Ещё раз рассказываю. Брал файл 6.0.6 и заменял им файл 5.1.14. Пробовал и с переименованием и без. И в отдельной папке с названием 6.0.6 тоже пробовал на всякий случай.
Дак я тебя спрашиваю что не работает конкретно. Ты сказал просто не работает. Это не ответ.
Сделать так, чтобы все названия остались те же, но подменить файл. Должно работать. Если не работает, скинь ошибку.
 
Ты сказал просто не работает. Это не ответ.
В топике темы я как раз-таки всё рассказал.
Ошибка такая:
Код:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'

указывает на строку такую:
Java:
connection = (Connection) DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);

Дальше листинг смотреть необязательно, так как дальше код не исполняется ввиду указанной ошибки. Эта и предыдущая строчки выглядят так же в куче нагугленных примеров и - что важно - в ряде старых плагинов, которые работали когда-то у меня на сервере (сейчас их там нет).


Сделать так, чтобы все названия остались те же, но подменить файл.
В третий раз рассказываю:
В папке сервера (Cauldron 1.7.10) по пути libraries/mysql/mysql-connector-java/5.1.14/ лежит файл mysql-connector-java-5.1.14.jar
В интернете я нашел mysql-connector-java-6.0.6.jar. Пытался подключить его разными способами, включая все вышесоветуемые и все, какие вообще пришли мне на ум. А именно (далее после каждого пункта проверялось, что изменилось, проблема в итоге не решилась):
1. Создал папку рядом, назвал её "6.0.6" и кинул новый файл туда. (нет изменений)
2. Удалил старый файл (5.1.14). (появилась ошибка ClassNotFound)
3. Удалил старую папку с названием "5.1.14".
4. Вернул папку "5.1.14". Положил в неё новый файл (6.0.6), не переименовывая.
5. Вернул, положив рядом с новым (6.0.6), старый файл (5.1.14). (вернулась старая ошибка)
6. Удалил снова старый файл (5.1.14). Переименовал новый файл (6.0.6) в имя старого (5.1.14).

Если и этот список не вносит ясность в ситуацию, остаётся только застримить через дискорд.
 
Назад
Верх