J’ai un sujet dans notre base de données avec un category_id dont la catégorie a été supprimée par quelqu’un. Je peux ouvrir ce sujet directement avec son id :
url : …/t/3
dans la table topics, l’id = 3 a category = 4. Mais cette catégorie est supprimée et n’est pas dans la table categories. J’ai pu supprimer beaucoup de ces sujets perdus. Mais celui-ci ne fonctionne pas, car les attributs closed et archived sont à true.
Si je choisis dans le menu contextuel “Supprimer définitivement” ce sujet, je reçois le message d’erreur suivant :
“Une erreur s’est produite : Ce sujet contient des messages non supprimés. Veuillez les supprimer définitivement avant de supprimer définitivement le sujet.”
Avez-vous une idée de comment insérer une catégorie factice avec l’id 4 dans la base de données ou de supprimer ce sujet perdu ?
Je pense que c’est le sujet “À propos” pour la catégorie General ?. Normalement, les sujets “À propos” ne seraient pas supprimables dans l’interface utilisateur.
Y a-t-il une raison pour laquelle vous souhaitez supprimer complètement celui-ci ?
parce que cette catégorie n’est pas plus disponible, mais ce qui est le plus important : le lien vers toutes les catégories dans la barre latérale ne fonctionne plus.
Si j’essaie d’ouvrir …/categories, j’obtiens un message d’erreur : “Error Something went wrong.” et dans la console du navigateur, le message d’erreur suivant s’affiche :
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 est indéfini
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
…
On dirait que quelqu’un a supprimé la catégorie alors qu’elle contenait des sujets d’une manière ou d’une autre ? Ce n’est pas censé arriver. Je pense que vous devrez faire quelque chose comme
rails c
c=Category.last; # ou une autre façon d'obtenir une catégorie)
Topic.where(category_id: 4).update_all(category_id: c.id)
Si votre catégorie General a été supprimée en toute sécurité via l’interface utilisateur, il est normal que le sujet À propos soit supprimé de manière logicielle comme vous le voyez. Cela ne devrait causer aucun problème.
Je pense qu’il y a peut-être autre chose en jeu. Y a-t-il plus de détails sur cette erreur dans votre page /logs ?
Select id, closed, archived, title,category_id
from topics
where id = '3'
result:
id closed archived title category
3 true true Über die Kategorie Team 4
Hmm. Je pensais que votre sujet cassé avait category_id de 4.
C’était ma meilleure supposition. Si vous avez un budget, vous pourriez demander de l’aide dans Marketplace. Je pense que vous aurez besoin de quelqu’un pour accéder à rails afin de voir s’il peut comprendre.
Marketplace est toujours une option, surtout si c’est urgent.
Bien qu’un peu plus de détails ici pourraient aider à susciter une réponse de la communauté.
Vous semblez tous les deux confiants que la cause profonde est ce sujet. Si l’explorateur de données peut le trouver, vous devriez pouvoir le trouver dans la console Rails. Si vous pouvez le trouver, vous devriez pouvoir utiliser post_destroyer dessus et le supprimer à partir de là ?
(Bien qu’un peu hésitant à le recommander car je n’ai pas tout à fait relié les points à l’endroit où se situe le problème)
Hmm. Il est inhabituel de pouvoir le trouver dans un sens et pas dans l’autre.
La console Rails peut être un peu comme un couteau bien aiguisé, il serait donc préférable de comprendre ce qui s’est mal passé exactement afin de minimiser les accidents/effets secondaires.
Comment cette catégorie a-t-elle été supprimée en premier lieu ?
(Au cas où le problème ne serait pas causé par ce sujet égaré, j’ajouterai les bases pour vérifier le mode sans échec et voir s’il y a plus d’informations sur l’erreur dans votre page YourSite/logs également)
Cependant, je ne sais pas si vos données sont dans un état où le système de suppression de catégorie pourrait aider ? Bulk delete all topics in a category
Malheureusement, cela ne corrige pas l’erreur avec le lien de catégorie. Mais le problème avec la publication non supprimable est résolu pour le moment. Le problème de catégorie n’est pas non plus enregistré dans le journal. Je m’attaquerai à cela dans les prochains jours.