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

Помогите MySql и его возможные ограничения

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

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

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

    Баллы:
    76
    Всем привет.

    Есть плагин, который хранит некоторые данные в таблице, в которой 27 столбцов. Около половины типов BLOB.

    Около месяца назад была проблема с плагином - почему-то он не сохранял данные в бд и они попросту терялись. Пришлось переписывать и это помогло.
    Но вот сейчас, спустя месяц, проблема вернулась (хотя в коде ничего не менялось). Рандомно пропадают данные когда сервер перезагружается (тобишь вырубается плагин, данные должны отправиться в бд и очиститься из кеша плагина), но некоторые данные попросту не сохраняются.

    Возникает вполне логичный вопрос: может все это время дело было не в коде плагина, а в кривой организации хранения данных? (или кривой настройки mysql)

    Мое предположение таково: возможно таблица достигла своего предела и более не записывает новые данные... Но отсюда возникает еще больше вопросов: во-первых, таблица весит всего 4 мб. Думаю, это далеко не предел. Ну и во-вторых, я попытался добавить новую запись вручную, вставив значения NULL, запись вполне спокойно добавилась (хотя это возможно из-за того, что все значения были null). Даже сейчас спустя 2 дня от "эксперимента", в бд прибавилось пару записей - тобишь какие-то новые записи добавляются.

    Второе предположение: что-то не так с типом BLOB. Ранее я никогда им не пользовался, прочитав документацию увидел, что никаких маленьких ограничений на размер там нет. Но может быть есть какие-то другие подводные камни?

    В общем, я в замешательстве. Не знаю на кого или что думать. Не знаю как дальше всё это тестить, выявлять баг
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Иметь множество столбцов типа blob в принципе сомнительно, но опустим. По-моему, должны хоть какие-то исключения бросаться. Неужели ничего?
     
  3. alexandrage

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

    Баллы:
    173
    blob не резиновый, если не хватает, смени на mediumblob = 16777215 bytes
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проверь, есть ли исключения в логах. Если нет - проверь логи MySQL. Если и там пусто - проверяй логику работы плагина. Возможно придётся какое-то время логировать записываемые в БД данные, чтобы отследить момент, когда запись не будет добавлена.
    Также могу предложить, что запись добавляется, однако через какое-то время удаляется по требованию. Казалось бы логично, но и про такое забываешь, когда уставший
     
  5. Автор темы
    reZero

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

    Баллы:
    76
    В нем не хранятся большие данные. 3-4 кб всего
     
  6. Автор темы
    reZero

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

    Баллы:
    76
    Никаких исключений не бросается, в этом и все сложности.

    Почему иметь много столбцов BLOB это сомнительно?
     
  7. Автор темы
    reZero

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

    Баллы:
    76
    Посмотрю логи mysql

    А что ты имел ввиду под "удаляется по требованию"?
    Типа плагин сам, запросом удаляет данные?
     
  8. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Данные отправляются исключительно когда плагин/сервер отключается?
    Если это так, есть возможность, что данные просто не успевают отправляться в бд.
     
  9. Автор темы
    reZero

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

    Баллы:
    76
    Нет
    Каждые 30 минут отправляются в бд и при выключении
     
  10. NuaN

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

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Наверное лучше всего сделать в плагине логирование каждого действия (какие данные отправились, ответ от БД и т.д.) и потом смотреть какие данные куда делись. Тут наверное опытным путем получится понять в чем проблема.
     

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