Non posso cancellare l'argomento senza categoria

Ho un argomento nel nostro database con un category_id la cui categoria è stata eliminata da qualcuno. Posso aprire questo argomento direttamente con il suo id:
url: …/t/3

Nella tabella topics l’id = 3 ha category = 4. Ma questa categoria è stata eliminata e non è presente nella tabella categories. Molti di questi argomenti persi sono riuscito a cancellarli. Ma questo non funziona, perché gli attributi closed e archived sono true.

Se scelgo nel menu a comparsa “Elimina definitivamente” questo argomento, ricevo il messaggio di errore:
“Si è verificato un errore: Questo argomento ha post non eliminati. Eliminarli definitivamente prima di eliminare definitivamente l’argomento.”

Qualche idea su come inserire una categoria fittizia con id 4 nel database o per eliminare questo argomento perso?

Penso che sia l’argomento About per la categoria General?. Normalmente gli argomenti About non sarebbero eliminabili nell’interfaccia utente.

C’è un motivo per cui vuoi eliminare completamente questo?

1 Mi Piace

poiché questa categoria non è più disponibile, ma cosa è più importante: il collegamento a tutte le categorie nella barra laterale non funziona più.
Se provo ad aprire …/categories ricevo un messaggio di errore: “Errore Qualcosa è andato storto.” e nella console del browser viene visualizzato il messaggio di errore:

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 è indefinito
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 Mi Piace

Sembra che qualcuno abbia cancellato la categoria quando in qualche modo conteneva argomenti? Non dovrebbe succedere. Penso che dovrai fare qualcosa del genere:

rails c
c=Category.last; # oppure un altro modo per ottenere una categoria)
Topic.where(category_id: 4).update_all(category_id: c.id)

Se la tua categoria General è stata eliminata in modo sicuro tramite l’interfaccia utente, è previsto che l’argomento About venga eliminato in modo “soft” come stai vedendo. Non dovrebbe causare alcun problema. :thinking:

Penso che ci possa essere qualcos’altro in gioco. Ci sono altri dettagli su quell’errore nella tua pagina /logs?

1 Mi Piace

Questo sembra non funzionare:

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

E in Data Explorer ottengo:

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. Pensavo che il tuo argomento interrotto avesse category_id 4.

Quella era la mia migliore ipotesi. Se hai un budget, potresti chiedere aiuto in Marketplace. Penso che avrai bisogno di qualcuno che entri in rails per vedere se riesce a capirlo.

1 Mi Piace

Marketplace è sempre un’opzione, soprattutto se è urgente. :heart:

Anche se un po’ più di dettaglio qui potrebbe aiutare a stimolare una risposta dalla community. :crossed_fingers:

Sembrate entrambi sicuri che la causa principale sia questo argomento. Se l’esploratore di dati riesce a trovarlo, allora dovreste essere in grado di trovarlo nella console di Rails. Se riuscite a trovarlo, dovreste essere in grado di usare post_destroyer su di esso ed eliminarlo da lì?

(Anche se sono un po’ titubante a raccomandarlo poiché non ho ancora collegato i punti su dove sia il problema)

3 Mi Piace

sì, nella console di Ruby posso vedere quel topic:

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

ma in Topic non c’è niente

Topic.where(id: 3)
=> []

[citazione=“JammyDodger, post:8, topic:367811”]
Se riesci a trovarlo, dovresti essere in grado di usare post_destroyer su di esso ed eliminarlo da lì?
[/citazione]

come puoi vedere, trovare è possibile. Ma non ho idea della sintassi Ruby per eliminare esattamente questa singola voce della tabella.

Hmm. :thinking: È insolito riuscire a trovarlo in un modo e non nell’altro.

La console di Rails può essere un po’ un coltello affilato, quindi sarebbe meglio capire cosa è andato storto per minimizzare eventuali incidenti/effetti a catena.

Come è stata eliminata questa categoria in primo luogo?

(Nel caso in cui il problema non sia causato da questo argomento errante, includerò le basi per controllare la modalità sicura e vedere se ci sono altre informazioni sull’errore nella tua pagina YourSite/logs)

Anche se non so se i tuoi dati sono in uno stato in cui il catch-all per l’eliminazione delle categorie potrebbe aiutare? Bulk delete all topics in a category

Ottima domanda. È stata fatta alcuni anni fa da un altro amministratore.

Nel frattempo ho eliminato questo argomento direttamente nella console rails con:

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

Dopo questo, l’argomento è stato eliminato :grinning_face:

1 Mi Piace

E questo ha risolto anche il tuo collegamento di categoria difettoso nella barra laterale?

È interessante che il problema si stia manifestando solo ora, quando era stato felicemente eliminato per diversi anni.

Se scopri la connessione, fammelo sapere. :slight_smile:

1 Mi Piace

Purtroppo, questo non risolve l’errore con il link della categoria. Ma il problema con il post non eliminabile è risolto per ora. Il problema della categoria non viene registrato nemmeno nel log. Affronterò la questione nei prossimi giorni.

1 Mi Piace

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