#javascript #sqlite #heroku #discord.js
#javascript #sqlite #heroku #discord.js
Вопрос:
У меня есть бот Discord с better-sqlite3
базой данных для монет и XP. Это всегда работало нормально до 2 недель назад. Теперь после каждого перезапуска он просто возвращает XP и монеты обратно. Это действительно раздражает, потому что люди повышают уровень до одного и того же каждый день.
Кто-нибудь знает, как это исправить?
Ответ №1:
Я был бы очень удивлен, если бы это когда-нибудь работало должным образом.
Эфемерная файловая система Heroku теряет все внесенные в нее изменения при каждом перезапуске вашего dynos. Это происходит часто (по крайней мере, один раз в день). В результате файловые базы данных, такие как SQLite, не поддерживаются на Heroku.
Вам придется переключиться на клиент-серверную базу данных, если вы хотите запустить свой код на Heroku. PostgreSQL является распространенным выбором, и Heroku предоставляет свой собственный размещенный сервис PostgreSQL, которым вы можете начать пользоваться бесплатно.
Комментарии:
1. Вы не можете использовать какое-либо хранилище данных на основе файлов на Heroku, за исключением временного хранилища.
2. Я не думаю, что это сложнее, и существует множество руководств. Сотни. Но это не имеет значения. Heroku не предоставляет постоянную файловую систему. Вы не можете использовать SQLite на нем, точка, независимо от того, насколько вам этого хочется (если вы не используете его в контексте только для чтения).
3. Если вам нужна простая база данных с Postgres, используйте
enmap@3
(версия 4 больше не поддерживает postgress) и используйтеenmap-postgress provoider
. Это позволит вам использовать структуру, подобную Discord.js Коллекции для хранения данных сохраняются. ( enmap.set() / enmap.get() )