Многие плагины хранят данные постоянно: права, балансы, логи или историю строительных действий. Для этого они используют либо базу данных MySQL или MariaDB, к которой подключаются по сети, либо файлы в собственной папке в plugins/, например базу данных SQLite или H2, то есть целую базу данных в одном файле. Если открыть или сохранить данные не получается, плагину не хватает его данных, или новые изменения теряются.
Каждый раздел ниже посвящён одному сообщению. Полное сообщение ты найдёшь в Консоль или в разделе Файлы в logs/latest.log. Строки сразу после него часто указывают точную причину. Перед любым вмешательством в папки плагинов, файлы баз данных или конфигурации создай резервную копию в разделе Резервные копии, а файлы баз данных удаляй или перемещай только при остановленном сервере.
База данных отказывает в доступе: неверный пользователь или пароль
Так выглядит сообщение:
java.sql.SQLException: Access denied for user '<User>'@'<Address>' (using password: YES)
Что за этим стоит: Плагин, например LuckPerms или CoreProtect, пытается подключиться к своей базе данных MySQL или MariaDB, но имя пользователя или пароль не подходят. База данных отклоняет вход. Из-за этого плагин не может ни загружать, ни сохранять данные: в зависимости от плагина он либо вообще не запускается, либо работает без своих прав, балансов или журналов, а новые изменения не попадают в базу данных. Если в конце стоит using password: NO, значит, в конфигурации пароль вообще не указан.
Как это исправить:
- Загляни в раздел Базы данных или в своё дополнение для базы данных и посмотри, какие данные для доступа действуют: хост, порт, имя базы данных, пользователь и пароль.
- Открой в разделе Файлы конфигурацию плагина, например для LuckPerms это
plugins/LuckPerms/config.yml, разделdata. - Впиши все значения точно так, как они указаны в панели. Обрати внимание на регистр и на пробелы в конце.
- Если пароль содержит специальные символы, такие как
#или:, заключи его в одинарные кавычки. Иначе YAML, текстовый формат этих файлов, неправильно прочитает значение. - Сохрани файл и перезапусти сервер.
Полезно знать: Если пароль базы данных был сброшен, старый больше не действует ни в одной конфигурации плагинов. Впиши новый везде, где используется эта база данных.
spark не может создать свои временные файлы
Так выглядит сообщение:
[spark] Exception occurred while rotating profiler job
java.lang.RuntimeException: Unable to create temporary output file
[spark] Failed to stop previous profiler job
Что за этим стоит: spark — это профилировщик, то есть инструмент измерения, который записывает, на что сервер тратит своё процессорное время. Свои временные файлы spark сохраняет в папке plugins/spark/tmp-client. Если этой папки нет, каждый цикл измерения завершается ошибкой, а spark повторяет попытку каждую минуту. Поэтому появляется так много одинаковых сообщений. Твой сервер при этом продолжает работать без помех, и это не проблема ни с местом на диске, ни с правами доступа.
Как это исправить:
- Быстрее всего нажать кнопку «Исправить автоматически» рядом с сообщением в разделе Состояние сервера.
- Вручную: открой Файлы, перейди в папку
plugins/sparkи создай в ней папкуtmp-client. Следи за точным написанием. - Несколько минут понаблюдай за Консоль. Сообщения должны прекратиться.
Полезно знать: Одного перезапуска недостаточно, потому что spark не создаёт эту папку заново сам. О том, как использовать spark для поиска причин лагов, читай в spark: как найти и понять лаги.
Плагин не может подключиться к своей базе данных
Так выглядит сообщение:
<Plugin>-hikari - Connection is not available, request timed out after <Time>ms.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
[LuckPerms] Failed to init storage
Что за этим стоит: Плагин не может установить соединение со своей базой данных MySQL или MariaDB. Типичные причины: в конфигурации указан неверный хост, база данных остановлена или существующее соединение оборвалось. «Hikari» — это пул соединений, который держит наготове подключения к базе данных для плагина. Пока проблема сохраняется, плагину не хватает его данных.
Как это исправить:
- Проверь, работает ли твоё дополнение для базы данных.
- Сравни хост и порт в конфигурации плагина с данными в разделе Базы данных или в дополнении. Не вписывай просто
localhost, а укажи именно тот хост, который указан в панели. - Перезапусти сервер и понаблюдай в Консоль за сообщениями плагина при запуске.
- Если собственная база данных тебе не нужна, переключи плагин на локальное хранилище, для LuckPerms это
storage-method: h2вplugins/LuckPerms/config.yml. Данные из базы данных при этом автоматически не переносятся.
Полезно знать: Если после «Error whilst saving group» следует подсказка «Value too long», дело не в соединении. Тогда какая-то запись длиннее 200 символов, предусмотренных в LuckPerms, например префикс с множеством цветовых кодов. Сократи её.
Grim не может открыть свою базу данных истории
Так выглядит сообщение:
IMPORTANT: Could not load SQLite driver for /grim history database.
Download the minecraft-sqlite-jdbc mod/plugin …, or change history.database.type
Alternatively set history.enabled=false to remove this message …
Что за этим стоит: Grim — это плагин античита. С помощью /grim history он показывает прежние результаты проверок игрока и сохраняет их для этого в базе данных SQLite, то есть в базе данных в одном файле. Чтобы открыть её, Grim нужен драйвер SQLite, небольшой дополнительный пакет для доступа к базе данных. Этого драйвера нет, поэтому база данных истории недоступна.
Как это исправить:
- Установи в разделе Плагины или Моды зависимость minecraft-sqlite-jdbc той версии, которая подходит к твоей версии Grim.
- Либо выбери в конфигурации Grim в параметре
history.database.typeдругую базу данных истории. - Если история тебе не нужна, отключи её: в конфигурации это значение
enabledв разделеhistory, в сообщении оно записано какhistory.enabled=false. - Полностью останови сервер и запусти его снова.
Полезно знать: Сообщение появляется при каждом запуске, пока ты не выполнишь один из трёх вариантов.
LuckPerms не может обновить свою базу данных
Так выглядит сообщение:
[LuckPerms] Something went wrong whilst upgrading the LuckPerms database. Please report this on GitHub.
org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "<Name>" already exists; SQL statement:
Что за этим стоит: При смене версии LuckPerms приводит структуру своей базы данных в соответствие с новой версией. Этот шаг выполнен не полностью. Строка сразу после, чаще всего сообщение H2 или SQL, называет шаг, который завершился ошибкой. H2 — это файл базы данных, который LuckPerms создаёт в папке plugins/LuckPerms, если у него нет собственной базы данных MySQL.
Как это исправить:
- Останови сервер и создай резервную копию в разделе Резервные копии, прежде чем пробовать снова.
- Обнови LuckPerms до актуальной сборки, которая подходит к ПО и версии твоего сервера.
- Не удаляй и не редактируй файлы базы данных вручную.
- Если ошибка появится снова, восстанови резервную копию. После этого помогут официальная миграция LuckPerms или поддержка LuckPerms.
Полезно знать: Пока LuckPerms ещё работает, с помощью lp export <File> ты дополнительно сохраняешь все права и группы в файл. lp import <File> позже загрузит их обратно.
Подробнее: Безопасное обновление LuckPerms: платформа, резервная копия и права
Отсутствует папка базы данных плагина
Так выглядит сообщение:
java.sql.SQLException: path to 'plugins/<Plugin>/databases/<File>.db': '/home/container/plugins/<Plugin>/databases' does not exist
Что за этим стоит: Плагин хранит свои данные в базе данных SQLite, то есть в одном файле в папке плагина. Сам файл он создать может, а вот папку для него — нет. Пока этой папки нет, плагин не может ничего загрузить или сохранить, например балансы, наборы или варпы. Такое может случиться, например, если папку плагина удалили или загрузили лишь частично.
Как это исправить:
- Прочитай в сообщении папку после двоеточия, в примере это
plugins/<Plugin>/databases. - Открой Файлы и создай именно эту папку. Следи за регистром:
Databasesиdatabases— это разные папки. - Перезапусти сервер и проверь, прекратилось ли сообщение.
Полезно знать: /home/container — это корневой каталог, который ты видишь в разделе Файлы. Эту часть пути при создании папки опускай.
Плагин отправляет команды SQLite, которые понимает только MySQL
Так выглядит сообщение:
[SQLITE_ERROR] SQL error or missing database (near "<Слово>": syntax error)
В чём причина: SQLite и MySQL говорят почти на одном языке баз данных, но не совсем. Плагин хранит свои данные в SQLite, но отправляет команды, которые понимает только MySQL. Это ошибка в плагине, а не в твоих файлах или настройках. Затронутые функции ничего не сохраняют. Слово после near показывает, в каком месте SQLite не понял команду.
Как это исправить:
- Обнови плагин в разделе Плагины до последней версии для твоей версии сервера. Возможно, ошибка там уже исправлена.
- Если плагин поддерживает MySQL в качестве хранилища, создай базу данных в разделе Базы данных, если твой тариф включает базы данных.
- В конфигурации плагина переключи хранилище на MySQL, укажи данные доступа и перезапусти сервер.
- Если ни то, ни другое не помогло, сообщи об ошибке автору плагина и приложи строку из лога.
Полезно знать: При переходе на MySQL плагин, как правило, не переносит прежние данные SQLite самостоятельно, если только в нём нет для этого отдельной функции.
EzShops или Jaloquent не могут подключиться к своему хранилищу
Так выглядит сообщение:
[EzShops] Failed to initialise Jaloquent for player shops; falling back to YAML
com.github.ezframework.jaloquent.exception.StorageException: Failed to begin transaction
В чём причина: Jaloquent — это библиотека хранения, через которую EzShops сохраняет магазины игроков в базе данных. Здесь Jaloquent не смог начать транзакцию, то есть связанную операцию записи, либо EzShops вообще не смог настроить своё хранилище Jaloquent. Настоящую причину указывает сообщение об ошибке сразу после этой строки. EzShops может частично переключиться на файлы YAML, тогда данные сохраняются в файлах, а не в базе данных.
Как это исправить:
- Открой
logs/latest.logи прочитай сообщение об ошибке прямо под этой строкой. В нём указана причина, связанная с базой данных или хранилищем, например «Access denied» или «Communications link failure». - Проверь, работает ли твоё дополнение для базы данных.
- Проверь хост, порт и данные доступа в конфигурации затронутого плагина.
- Если EzShops переключился на YAML, создай резервную копию в разделе Резервные копии, прежде чем что-то менять. Так сохранятся магазины, которые тем временем были записаны в YAML.
- Перезапусти сервер.
PvPManager не находит папку своей базы данных
Так выглядит сообщение:
[PvPManager] Failed to batch update database
java.sql.SQLException: path to 'plugins/PvPManager/database.db': '<Путь>' does not exist
В чём причина: PvPManager регулирует бои между игроками и хранит данные игроков в базе данных SQLite plugins/PvPManager/database.db. Однако папки plugins/PvPManager нет в файловой системе сервера. Поэтому PvPManager не может ни открыть свою базу данных, ни записать в неё, и новые данные не сохраняются.
Как это исправить:
- Останови сервер.
- Создай в разделе Файлы папку
plugins/PvPManager, следя за точным написанием. Либо чисто переустанови PvPManager в разделе Плагины. - Проверь права на файлы: создай в новой папке тестовый файл и снова удали его.
- Проверь, достаточно ли ещё свободного места.
- Запусти сервер и проверь, пропало ли сообщение.
Полезно знать: Если место заполнено, поможет статья Место закончилось: как устранить «No space left on device».
EssentialsX не может сохранить свой кэш UUID
Так выглядит сообщение:
[Essentials] Error while saving Name->UUID cache
java.io.IOException: No such file or directory
В чём причина: EssentialsX запоминает, какому UUID соответствует какой ник игрока. UUID — это постоянный идентификатор аккаунта Minecraft. Этот список плагин записывает как кэш, то есть промежуточное хранилище, в свою папку данных и сначала создаёт для этого временный файл. Это не удаётся, потому что папка plugins/Essentials отсутствует или недоступна для записи. Если папки действительно нет, EssentialsX не сможет сохранять там и остальные свои данные.
Как это исправить:
- Открой Файлы и проверь, существует ли папка
plugins/Essentials. Если нет, создай её. - Проверь, доступна ли она для записи: создай в ней тестовый файл и снова удали его.
- Обнови EssentialsX в разделе Плагины до версии для твоей версии сервера.
- Перезапусти сервер.
Полезно знать: Если в папке не удаётся создать файл, она, вероятно, принадлежит не тому пользователю, от имени которого работает твой сервер. Если не получается продвинуться дальше, открой тикет и укажи время появления сообщения.
FastAsyncWorldEdit: файл истории повреждён
Так выглядит сообщение:
Could not load block history file plugins/FastAsyncWorldEdit/history/<Папка>/<Файл>
An unexpected error while handling a FastAsyncWorldEdit command
java.io.EOFException: Stream ended prematurely
В чём причина: FastAsyncWorldEdit, сокращённо FAWE, сохраняет файл истории для строительных действий, чтобы ты мог отменить их командой //undo. Один из этих файлов неполный, чаще всего потому, что сервер был остановлен, пока FAWE ещё писал. Именно этот //undo тогда невозможен. Сам мир не затронут, и сервер продолжает работать как обычно.
Как это исправить:
- Обычно ничего делать не нужно. Сообщение касается только одного этого шага истории.
- Если оно повторяется, останови сервер.
- Удали в разделе Файлы указанную в сообщении папку внутри
plugins/FastAsyncWorldEdit/history. - Снова запусти сервер.
Полезно знать: После удаления действия из этой папки отменить уже не получится. Подробнее о //undo: WorldEdit: строить и отменять действия.
WorldEdit: сохранённый буфер обмена не загружается
Так выглядит сообщение:
Error loading clipboard from disk
… Size exceeds Integer.MAX_VALUE
В чём причина: FAWE может сохранять буфер обмена игрока на диске. Сохранённый буфер обмена не удалось загрузить: либо он слишком большой, тогда в сообщении стоит «Size exceeds Integer.MAX_VALUE», либо он повреждён. Игроку нужно заново скопировать свою выделенную область. Мир и сервер это не затрагивает.
Как это исправить:
- Останови сервер.
- Открой в разделе Файлы папку
plugins/FastAsyncWorldEdit/clipboard. - Удали файл затронутого игрока. Его имя, как правило, содержит UUID игрока, то есть постоянный идентификатор его аккаунта Minecraft.
- Снова запусти сервер и попроси игрока заново скопировать выделенную область.
Полезно знать: Очень большие копии лучше сохранять как схематик, то есть как отдельный файл чертежа, например командой //schem save <Имя>. При необходимости ты загружаешь его обратно в буфер обмена командой //schem load <Имя>.
WorldEdit: в схематике есть сущность без позиции
Так выглядит сообщение:
Failed to load a saved clipboard
java.io.IOException: Missing position for entity <Сущность>
В чём причина: сущности — это всё в мире, что не является блоком, например животные, стойки для брони или рамки. В сохранённой схематике, то есть файле-чертеже постройки, есть сущность, у которой отсутствует информация о позиции. Поэтому WorldEdit не может полностью загрузить схематику. Твой мир это не затрагивает, просто не получается корректно вставить именно эту схематику.
Как это исправить:
- Если постройка ещё стоит в мире, снова выдели её с помощью WorldEdit и скопируй командой
//copyбез параметра-e. Так сущности не попадут в копию. - Сохрани новую копию командой
//schem save <Имя>под новым именем и с этого момента используй этот файл. - Если у тебя остался только файл, открой его в редакторе схематик и удали повреждённую сущность.
- Затем загрузи схематику командой
//schem load <Имя>и проверь, что сообщение больше не появляется.
Полезно знать: если животные или рамки в постройке тебе не нужны, самый быстрый способ — сохранить её без сущностей.
Отсутствует папка кэша
Так выглядит сообщение:
java.nio.file.NoSuchFileException: /home/container/.cache/<Файл>
В чём причина: мод или лаунчер, то есть программа запуска, хотел сохранить файлы в папку .cache в корневом каталоге твоего сервера. Но такой папки нет. Обычно это происходит после переустановки или если папка была удалена при очистке. Чаще всего проблема решается сама, потому что при следующем запуске папка создаётся заново.
Как это исправить:
- Один раз перезапусти сервер. В большинстве случаев после этого сообщение пропадает.
- Если оно остаётся, открой Файлы и попробуй создать папку в корневом каталоге. Если не получается, значит, в этот каталог нельзя записывать.
- Проверь, достаточно ли ещё свободного места. Если хранилище заполнено, папки тоже не создаются.
- Если ничего не помогает, создай тикет и укажи время появления сообщения.
Полезно знать: если хранилище заполнено, поможет статья Хранилище заполнено: как исправить «No space left on device».
Плагин домов не может сохранить точку телепортации
Так выглядит сообщение:
Failed to create home for player <Player-ID> in the database.
В чём причина: Дом — это сохранённая точка телепортации. Соответствующий плагин пытается создать новую запись в своей базе данных, но у него не получается. Новая запись дома не сохраняется, сервер при этом продолжает работать. Конкретную причину ошибки базы данных обычно можно найти в соседних сообщениях об ошибках.
Как это исправить:
- Откройте в Консоль или в разделе Файлы в
logs/latest.logстроки непосредственно до и после этого сообщения. Найди название плагина и соответствующее сообщение об ошибке базы данных. - Проверь конфигурацию хранения данных этого плагина. Если он использует внешнюю базу данных, сравни адрес, базу данных и учётные данные с данными в разделе Базы данных.
- Сделай резервную копию существующей базы данных, прежде чем менять её настройки или таблицы. После этого устрани конкретно указанную ошибку согласно документации плагина.
- Попробуй создать дом ещё раз. Если ошибка остаётся, сообщи о ней автору плагина, приложив полную трассировку ошибки и время её появления.
Полезно знать: Удаление базы данных также удаляет уже сохранённые дома.
Твоего сообщения нет в списке?
Прочитай сообщение целиком в logs/latest.log, а также строки до и после него. При ошибках базы данных настоящая причина часто указана в строке с «Caused by». Какой плагин затронут, подскажут название в квадратных скобках и названия папок в стектрейсе, то есть в строках at … под сообщением, например me/lucko/luckperms для LuckPerms. Затем проверь данные доступа, папки и свободное место. Перед любым вмешательством создай резервную копию. Если не получается разобраться, открой тикет и укажи время появления сообщения.