1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем LaoTheLizard, 20 май 2019.

  1. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Есть такой код:
    Код:
          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();
                 }
          }
    
    Не подключается, пишет ошибку:
    [​IMG]

    Гуглил - так и не понял, в чем причина.
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Время обновлять MySQL?
     
  3. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    MySQL 6.0.6 - слишком старая?
     
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Последняя стабильная версия на сей момент 8.0.13. Если не ради устранения ошибки, то хотя бы ради надежности обновиться бы стоило.
     
  5. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

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

    Что касается конфига, я пробовал делать готовую строчку - всё то же самое.
     
  6. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

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

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

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

    alexandrage Старожил Пользователь

    Баллы:
    173
    Само ведро никак не юзает jdbc.
     
  8. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Читать, как анекдот:

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

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

    alexandrage Старожил Пользователь

    Баллы:
    173
    А всего то надо было обновить jdbc. Сам виноват.
     
  10. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

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

    Как обновить jdbc, я не понял, честно. Подскажешь - буду благодарен.
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Качаешь новый и заменяешь старый. Капец как сложно.
     
  12. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Ну я так и делал уже ранее. Скачал версию 6.0.6. И куда её девать? Я попробовал создать папку 6.0.6 и положить туда под аналогичным именем - не помогло. Попробовал заменить имеющуюся 5.1.14 на 6.0.6, переименовав - не помогло. Попробовал просто удалить всю папку 5.1.14 - тогда оно начало писать ClassNotFound. Я не понимаю, что нужно сделать, честно.
     
  13. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Как это вообще работает, я не пойму? Я прочесал Cauldron - в нём вроде нигде не встречается ссылка на эту папку. Как он находит этот класс? Почему я подставляю другой класс, в котором есть тот же класс "com.mysql.jdbc.Driver", но он его не видит?
     
  14. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Тебе чем мой первый ответ не помог?
     
  15. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Если бы ты прочитал всё, что было написано после твоего первого ответа, ты бы увидел, что я нашел, где лежит этот драйвер у меня. И понял бы, что я уже пытался разными способами его заменить с версии 5.1.14 на версию 6.0.6. И понял бы, что ни один из способов не подошёл и суть моего вопроса в этой теме в том, чтобы объяснить мне, как мне его там подменить (проапгрейдить), чтобы эта хренотень, наконец, заработала. :)
     
  16. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    А что не работает если ты закинешь в папку 5.1.14 файлы с 6.0.6 с заменой?
     
  17. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Ещё раз рассказываю. Брал файл 6.0.6 и заменял им файл 5.1.14. Пробовал и с переименованием и без. И в отдельной папке с названием 6.0.6 тоже пробовал на всякий случай.
     
  18. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Если тебя напрягает общаться с теми, кто знает меньше тебя, зачем ты вообще сюда приходишь?
     
  19. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Дак я тебя спрашиваю что не работает конкретно. Ты сказал просто не работает. Это не ответ.
    Сделать так, чтобы все названия остались те же, но подменить файл. Должно работать. Если не работает, скинь ошибку.
     
  20. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    В топике темы я как раз-таки всё рассказал.
    Ошибка такая:
    Код:
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
    
    указывает на строку такую:
    Код:
    connection = (Connection) DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
    
    Дальше листинг смотреть необязательно, так как дальше код не исполняется ввиду указанной ошибки. Эта и предыдущая строчки выглядят так же в куче нагугленных примеров и - что важно - в ряде старых плагинов, которые работали когда-то у меня на сервере (сейчас их там нет).


    В третий раз рассказываю:
    В интернете я нашел 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).

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

Поделиться этой страницей