Kann Thema ohne Kategorie nicht löschen

Ich habe ein Thema in unserer Datenbank mit einer category_id, dessen Kategorie jemand gelöscht hat. Ich kann dieses Thema direkt mit seiner ID öffnen:
URL: …/t/3

In der Tabelle topics hat die ID = 3 die Kategorie = 4. Aber diese Kategorie ist gelöscht und nicht in der Tabelle categories. Viele dieser verlorenen Themen konnte ich löschen. Aber dieses funktioniert nicht, weil die Attribute closed und archived auf true stehen.

Wenn ich im Popup-Menü “Dauerhaft löschen” für dieses Thema auswähle, erhalte ich die Fehlermeldung:
“Es ist ein Fehler aufgetreten: Dieses Thema hat nicht gelöschte Beiträge. Bitte löschen Sie diese dauerhaft, bevor Sie das Thema dauerhaft löschen.”

Irgendeine Idee, wie ich eine Dummy-Kategorie mit der ID 4 in die Datenbank einfügen oder dieses verlorene Thema löschen kann?

[Zitat=“steinjer, Beitrag:1, Thema:367811”]
in table topics the id = 3 has category = 4.
[/Zitat]

Ich denke, das ist das Thema „Über“ für die Kategorie General. Normalerweise wären die „Über“-Themen in der Benutzeroberfläche nicht löschbar.

Gibt es einen Grund, warum Sie dieses Thema vollständig löschen möchten?

1 „Gefällt mir“

da diese Kategorie nicht stärker verfügbar ist, aber was ist wichtiger: Der Link zu allen Kategorien in der Seitenleiste funktioniert nicht mehr.
Wenn ich versuche, …/categories zu öffnen, erhalte ich die Fehlermeldung: “Fehler Es ist etwas schiefgelaufen.” und in der Browserkonsole wird die Fehlermeldung angezeigt:

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 ist undefiniert
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

2 „Gefällt mir“

Es klingt, als hätte jemand die Kategorie gelöscht, obwohl sie Themen enthält? Das sollte eigentlich nicht passieren. Ich denke, du musst so etwas machen wie:

rails c
c=Category.last; # oder eine andere Möglichkeit, eine Kategorie zu bekommen)
Topic.where(category_id: 4).update_all(category_id: c.id)

Wenn Ihre #general-Kategorie sicher über die Benutzeroberfläche gelöscht wurde, ist es zu erwarten, dass das About-Thema wie von Ihnen gesehen weich gelöscht wird. Es sollte keine Probleme verursachen. :thinking:

Ich glaube, es könnte noch etwas anderes im Spiel sein. Gibt es weitere Details zu diesem Fehler auf Ihrer /logs-Seite?

1 „Gefällt mir“

This seems not to work:

discourse(prod)> Topic.where(category_id: 4).update_all(category_id: 20)
=> 0
discourse(prod)> Topic.where(id: 3).update_all(category_id: 20)
=> 0

And in Data Explorer I get:

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. Ich dachte, dein kaputtes Thema hätte die Kategorie-ID 4.

[Zitat=“steinjer, Beitrag:1, Thema:367811”]
In der Tabelle topics hat die ID = 3 die Kategorie = 4.
[/Zitat]

Das war meine beste Vermutung. Wenn du ein Budget hast, könntest du im Marketplace um Hilfe bitten. Ich denke, du brauchst jemanden, der sich mit Rails auskennt, um herauszufinden, woran es liegt.

1 „Gefällt mir“

Marketplace ist immer eine Option, besonders wenn es dringend ist. :heart:

Obwohl ein paar mehr Details hier helfen könnten, eine Community-Antwort anzukurbeln. :crossed_fingers:

Ihr scheint beide zuversichtlich zu sein, dass die Ursache dieses Themas ist. Wenn der Daten-Explorer es finden kann, dann solltet ihr es auch in der Rails-Konsole finden können. Wenn ihr es finden könnt, dann solltet ihr es mit post_destroyer löschen können?

(Obwohl ich zögere, es zu empfehlen, da ich die Zusammenhänge, wo das Problem liegt, noch nicht ganz verstanden habe)

3 „Gefällt mir“

Ja, in der Ruby-Konsole kann ich dieses Thema sehen:

result = ActiveRecord::Base.lease_connection.exec_query('SELECT id, category_id FROM topics WHERE id = 3')
result.rows
=\u003e [[3, 4]]

aber im Topic ist nichts

Topic.where(id: 3)
=\u003e []

[Zitat=“JammyDodger, Beitrag:8, Thema:367811”]
Wenn du es finden kannst, solltest du in der Lage sein, post_destroyer darauf anzuwenden und es von dort aus zu löschen?
[/Zitat]

Wie du siehst, ist das Finden möglich. Aber ich habe keine Ahnung von der Ruby-Syntax, um genau diesen einen Tabelleneintrag zu löschen.

Hmm. :thinking: Es ist ungewöhnlich, es auf die eine und nicht auf die andere Weise finden zu können.

Die Rails-Konsole kann ein ziemlich scharfes Messer sein, daher wäre es am besten herauszufinden, was genau schief gelaufen ist, um Unfälle/Folgeeffekte zu minimieren.

Wie wurde diese Kategorie überhaupt gelöscht?

(Nur für den Fall, dass das Problem nicht durch dieses verwaiste Thema verursacht wird, werde ich auch die Grundlagen des Überprüfens des abgesicherten Modus und des Suchens nach weiteren Informationen über den Fehler auf Ihrer Seite YourSite/logs hinzufügen)

Ich weiß jedoch nicht, ob Ihre Daten in einem Zustand sind, in dem die Kategorie-Lösch-Catch-all helfen könnte? Bulk delete all topics in a category

Gute Frage. Das wurde vor einigen Jahren von einem anderen Administrator gemacht.

In der Zwischenzeit habe ich dieses Thema direkt in der Rails-Konsole gelöscht mit:

result = ActiveRecord::Base.lease_connection.exec_delete('DELETE FROM topics WHERE id = 3')

Danach ist das Thema gelöscht :grinning_face:

1 „Gefällt mir“

Und hat das auch deinen fehlerhaften Kategorie-Link in der Seitenleiste behoben?
Es ist interessant, dass das Problem erst jetzt auftritt, obwohl er seit mehreren Jahren problemlos gelöscht wurde.
Wenn du die Verbindung herausfindest, lass es mich wissen. :slight_smile:

1 „Gefällt mir“

Leider behebt dies nicht den Fehler mit dem Kategorielink. Aber das Problem mit dem nicht l[ö]schbaren Beitrag ist f[ü]r jetzt gel[ö]st. Das Kategorieproblem wird auch nicht im Protokoll protokolliert. Ich werde mich in den n[ä]chsten Tagen darum k[ü]mmern.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.