У меня в базе данных есть тема с category_id, соответствующим удалённой категории. Я могу открыть эту тему напрямую по её ID:
URL: …/t/3
В таблице topics у записи с id = 3 значение category = 4. Однако эта категория удалена и отсутствует в таблице categories. Многие из таких «потерянных» тем я мог бы удалить, но эта не удаляется, так как атрибуты closed и archived установлены в true.
Если в всплывающем меню выбрать «Перманентно удалить» эту тему, появляется сообщение об ошибке:
«Произошла ошибка: у этой темы есть не удалённые посты. Пожалуйста, перманентно удалите их перед удалением темы».
Есть ли идеи, как вставить в базу данных фиктивную категорию с id = 4 или как удалить эту «потерянную» тему?
Поскольку эта категория больше недоступна, но что важнее: ссылка на все категории в боковой панели больше не работает.
При попытке открыть …/categories появляется сообщение об ошибке: «Ошибка. Что-то пошло не так», а в консоли браузера отображается следующее сообщение об ошибке:
Uncaught TypeError: i is null
reason binary.js:7
l item.js:166
get topic.js:1017
ee upload.js:65
get topic.js:1017
get topic.js:1017
eM topic.js:1017
s backup-codes.js:33
n backup-codes.js:33
Z upload.js:65
T backup-codes.js:33
evaluate backup-codes.js:33
_execute backup-codes.js:33
execute backup-codes.js:33
rerender backup-codes.js:33
render theme-setting.js:6
_renderRoots theme-setting.js:6
tA backup-codes.js:33
_renderRoots theme-setting.js:6
_renderRootsTransaction theme-setting.js:6
_revalidate theme-setting.js:6
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_run client-error-handler.js:88
run client-error-handler.js:88
d bookmark.js:114
Ember 2
_join client-error-handler.js:88
join client-error-handler.js:88
p bookmark.js:114
h bookmark.js:114
$ topic.js:1017
trigger composer-action-title.js:62
transitionStarted add-translation.js:27
loading ace-editor.js:176
D upload.js:65
triggerEvent upload.js:65
trigger form-template-validation.js:54
_handleSlowTransition upload.js:65
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_runExpiredTimers client-error-handler.js:88
setTimeout handler*setTimeout client-error-handler.js:88
_installTimerTimeout client-error-handler.js:88
_later client-error-handler.js:88
later client-error-handler.js:88
T bookmark.js:114
_triggerAction form-template-validation.js:54
click form-template-validation.js:54
binary.js:7
Uncaught TypeError: i is null
reason binary.js:7
l item.js:166
get topic.js:1017
ee upload.js:65
get topic.js:1017
get topic.js:1017
eM topic.js:1017
s backup-codes.js:33
n backup-codes.js:33
Z upload.js:65
T backup-codes.js:33
evaluate backup-codes.js:33
_execute backup-codes.js:33
execute backup-codes.js:33
rerender backup-codes.js:33
render theme-setting.js:6
_renderRoots theme-setting.js:6
tA backup-codes.js:33
_renderRoots theme-setting.js:6
_renderRootsTransaction theme-setting.js:6
_revalidate theme-setting.js:6
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_run client-error-handler.js:88
run client-error-handler.js:88
d bookmark.js:114
success base.js:71
l loader.js:1286
fireWith loader.js:1286
jQuery 4
a base.js:71
e named-references.js:49
e named-references.js:49
A base.js:71
_findCategoriesAndTopics item.js:166
k named-references.js:49
w named-references.js:49
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_runExpiredTimers client-error-handler.js:88
setTimeout handler*setTimeout client-error-handler.js:88
_installTimerTimeout client-error-handler.js:88
_later client-error-handler.js:88
later client-error-handler.js:88
T bookmark.js:114
_triggerAction form-template-validation.js:54
click form-template-validation.js:54
TypeError: t.category_list.categories is undefined
s form-template-validation.js:54
categoriesFrom form-template-validation.js:54
_findCategoriesAndTopics item.js:166
k named-references.js:49
w named-references.js:49
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_run client-error-handler.js:88
run client-error-handler.js:88
d bookmark.js:114
success base.js:71
l loader.js:1286
fireWith loader.js:1286
jQuery 4
a base.js:71
e named-references.js:49
e named-references.js:49
A base.js:71
_findCategoriesAndTopics item.js:166
k named-references.js:49
w named-references.js:49
invoke client-error-handler.js:88
flush client-error-handler.js:88
flush client-error-handler.js:88
_end client-error-handler.js:88
end client-error-handler.js:88
_runExpiredTimers client-error-handler.js:88
setTimeout handler*setTimeout client-error-handler.js:88
_installTimerTimeout client-error-handler.js:88
_later client-error-handler.js:88
later client-error-handler.js:88
T bookmark.js:114
_triggerAction form-template-validation.js:54
click form-template-validation.js:54
Ошибка при обработке маршрута: discovery.categories свойство t.category_list.categories не определено 3069/categoriesFrom/s<@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:9:2817
categoriesFrom@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:9:2809
11341/_findCategoriesAndTopics/<@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:27:122623
k@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:441:164470
w@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:441:164363
invoke@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:202:7701
flush@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:202:6778
flush@https://forum.mydiscourse.de/assets/chunk.0144d0b7f03b4dd2b0a0.d41d8cd9.js:202:8650
... и многое другое
Если категория General была удалена корректно через интерфейс, то ожидаемо, что тема «О проекте» будет мягко удалена, как вы наблюдаете. Это не должно вызвать никаких проблем.
Похоже, здесь задействован ещё какой-то фактор. Есть ли на странице /logs дополнительная информация об этой ошибке?
Select id, closed, archived, title, category_id
from topics
where id = '3'
результат:
id closed archived title category
3 true true Über die Kategorie Team 4
Хм. Я думал, что у вашей сломанной темы category_id был равен 4.
Это было моё лучшее предположение. Если у вас есть бюджет, вы можете попросить о помощи в канале Marketplace. Думаю, вам понадобится кто-то, кто разбирается в Rails, чтобы понять, в чём проблема.
Marketplace всегда вариант, особенно если это срочно.
Хотя немного больше деталей здесь могло бы помочь поднять реакцию сообщества.
Вы оба, похоже, уверены, что корневая причина в этой теме. Если Data Explorer может её найти, то вы должны суметь найти её и в консоли Rails. Если вы можете её найти, то должны суметь использовать post_destroyer для неё и удалить оттуда?
(Хотя я немного колеблюсь рекомендовать это, так как ещё не совсем связал все точки, чтобы понять, где именно проблема)
Хм. Необычно, что это можно найти одним способом, но не другим.
Консоль Rails может быть довольно острым инструментом, поэтому лучше всего точно выяснить, что именно пошло не так, чтобы минимизировать любые аварии или побочные эффекты.
Как именно была удалена эта категория?
(На случай, если проблема вызвана не этим случайным топиком, я также добавлю основы проверки безопасного режима и посмотрю, есть ли дополнительная информация об ошибке на странице YourSite/logs)
Хотя я не знаю, находятся ли ваши данные в таком состоянии, когда универсальное решение для удаления категории могло бы помочь? Bulk delete all topics in a category
К сожалению, это не исправляет ошибку с ссылкой на категорию. Однако проблема с неудаляемым сообщением на данный момент решена. Проблема с категорией также не фиксируется в логах. Я займусь этим в ближайшие дни.